@luma.gl/webgl 9.3.0-alpha.4 → 9.3.0-alpha.8

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 (210) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +1 -1
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +4 -1
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.d.ts +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  9. package/dist/adapter/converters/shader-formats.d.ts +1 -64
  10. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  11. package/dist/adapter/converters/shader-formats.js +1 -64
  12. package/dist/adapter/converters/shader-formats.js.map +1 -1
  13. package/dist/adapter/converters/webgl-shadertypes.d.ts +1 -3
  14. package/dist/adapter/converters/webgl-shadertypes.d.ts.map +1 -1
  15. package/dist/adapter/converters/webgl-shadertypes.js +1 -6
  16. package/dist/adapter/converters/webgl-shadertypes.js.map +1 -1
  17. package/dist/adapter/converters/webgl-texture-table.d.ts +8 -4
  18. package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -1
  19. package/dist/adapter/converters/webgl-texture-table.js +122 -58
  20. package/dist/adapter/converters/webgl-texture-table.js.map +1 -1
  21. package/dist/adapter/converters/webgl-vertex-formats.d.ts +1 -1
  22. package/dist/adapter/converters/webgl-vertex-formats.d.ts.map +1 -1
  23. package/dist/adapter/converters/webgl-vertex-formats.js +1 -1
  24. package/dist/adapter/converters/webgl-vertex-formats.js.map +1 -1
  25. package/dist/adapter/device-helpers/webgl-device-features.d.ts +1 -1
  26. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  27. package/dist/adapter/device-helpers/webgl-device-features.js +1 -2
  28. package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -1
  29. package/dist/adapter/device-helpers/webgl-device-info.d.ts +1 -1
  30. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -1
  31. package/dist/adapter/device-helpers/webgl-device-info.js +6 -1
  32. package/dist/adapter/device-helpers/webgl-device-info.js.map +1 -1
  33. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +1 -1
  34. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -1
  36. package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -1
  37. package/dist/adapter/helpers/format-utils.d.ts +1 -1
  38. package/dist/adapter/helpers/format-utils.d.ts.map +1 -1
  39. package/dist/adapter/helpers/format-utils.js +1 -1
  40. package/dist/adapter/helpers/format-utils.js.map +1 -1
  41. package/dist/adapter/helpers/get-shader-layout-from-glsl.js +30 -19
  42. package/dist/adapter/helpers/get-shader-layout-from-glsl.js.map +1 -1
  43. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  44. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  45. package/dist/adapter/helpers/set-uniform.js +1 -1
  46. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  47. package/dist/adapter/helpers/webgl-texture-utils.d.ts +1 -1
  48. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
  49. package/dist/adapter/helpers/webgl-texture-utils.js +4 -4
  50. package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -1
  51. package/dist/adapter/helpers/webgl-topology-utils.d.ts +1 -1
  52. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.js +1 -1
  54. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -1
  55. package/dist/adapter/resources/webgl-buffer.d.ts +1 -1
  56. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgl-buffer.js +20 -5
  58. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  59. package/dist/adapter/resources/webgl-command-buffer.d.ts +3 -3
  60. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgl-command-buffer.js +22 -36
  62. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  63. package/dist/adapter/resources/webgl-command-encoder.d.ts +6 -5
  64. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  65. package/dist/adapter/resources/webgl-command-encoder.js +23 -8
  66. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  67. package/dist/adapter/resources/webgl-framebuffer.d.ts +3 -1
  68. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  69. package/dist/adapter/resources/webgl-framebuffer.js +10 -1
  70. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  71. package/dist/adapter/resources/webgl-query-set.d.ts +37 -31
  72. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-query-set.js +247 -96
  74. package/dist/adapter/resources/webgl-query-set.js.map +1 -1
  75. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  76. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-render-pass.js +25 -11
  78. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  79. package/dist/adapter/resources/webgl-render-pipeline.d.ts +17 -21
  80. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  81. package/dist/adapter/resources/webgl-render-pipeline.js +69 -167
  82. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  83. package/dist/adapter/resources/webgl-sampler.d.ts +1 -1
  84. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  85. package/dist/adapter/resources/webgl-sampler.js +1 -1
  86. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  87. package/dist/adapter/resources/webgl-shader.d.ts +1 -1
  88. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  89. package/dist/adapter/resources/webgl-shader.js +15 -8
  90. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  91. package/dist/adapter/resources/webgl-shared-render-pipeline.d.ts +24 -0
  92. package/dist/adapter/resources/webgl-shared-render-pipeline.d.ts.map +1 -0
  93. package/dist/adapter/resources/webgl-shared-render-pipeline.js +155 -0
  94. package/dist/adapter/resources/webgl-shared-render-pipeline.js.map +1 -0
  95. package/dist/adapter/resources/webgl-texture.d.ts +27 -6
  96. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  97. package/dist/adapter/resources/webgl-texture.js +199 -101
  98. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  99. package/dist/adapter/resources/webgl-transform-feedback.js +1 -1
  100. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
  101. package/dist/adapter/resources/webgl-vertex-array.d.ts +2 -2
  102. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  103. package/dist/adapter/resources/webgl-vertex-array.js +1 -1
  104. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -1
  105. package/dist/adapter/webgl-device.d.ts +6 -3
  106. package/dist/adapter/webgl-device.d.ts.map +1 -1
  107. package/dist/adapter/webgl-device.js +36 -4
  108. package/dist/adapter/webgl-device.js.map +1 -1
  109. package/dist/adapter/webgl-presentation-context.d.ts +21 -0
  110. package/dist/adapter/webgl-presentation-context.d.ts.map +1 -0
  111. package/dist/adapter/webgl-presentation-context.js +64 -0
  112. package/dist/adapter/webgl-presentation-context.js.map +1 -0
  113. package/dist/constants/index.d.ts +3 -0
  114. package/dist/constants/index.d.ts.map +1 -0
  115. package/dist/constants/index.js +5 -0
  116. package/dist/constants/index.js.map +1 -0
  117. package/dist/constants/webgl-constants.d.ts +822 -0
  118. package/dist/constants/webgl-constants.d.ts.map +1 -0
  119. package/dist/constants/webgl-constants.js +928 -0
  120. package/dist/constants/webgl-constants.js.map +1 -0
  121. package/dist/constants/webgl-types.d.ts +480 -0
  122. package/dist/constants/webgl-types.d.ts.map +1 -0
  123. package/dist/constants/webgl-types.js +6 -0
  124. package/dist/constants/webgl-types.js.map +1 -0
  125. package/dist/context/debug/webgl-developer-tools.js +1 -1
  126. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  127. package/dist/context/helpers/webgl-context-data.d.ts +1 -1
  128. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -1
  129. package/dist/context/helpers/webgl-extensions.d.ts +1 -1
  130. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -1
  131. package/dist/context/parameters/unified-parameter-api.d.ts +1 -1
  132. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  133. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  134. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  135. package/dist/context/parameters/webgl-parameter-tables.js +1 -1
  136. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  137. package/dist/context/polyfills/polyfill-webgl1-extensions.js +1 -1
  138. package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -1
  139. package/dist/dist.dev.js +1473 -824
  140. package/dist/dist.min.js +2 -2
  141. package/dist/index.cjs +3 -5491
  142. package/dist/index.cjs.map +4 -4
  143. package/dist/index.d.ts +2 -0
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +1 -0
  146. package/dist/index.js.map +1 -1
  147. package/dist/webgl-constants.d.ts +2 -0
  148. package/dist/webgl-constants.d.ts.map +1 -0
  149. package/dist/webgl-constants.js +5 -0
  150. package/dist/webgl-constants.js.map +1 -0
  151. package/dist/webgl-types.d.ts +2 -0
  152. package/dist/webgl-types.d.ts.map +1 -0
  153. package/dist/{types.js → webgl-types.js} +1 -1
  154. package/dist/webgl-types.js.map +1 -0
  155. package/package.json +18 -4
  156. package/src/adapter/converters/device-parameters.ts +6 -2
  157. package/src/adapter/converters/sampler-parameters.ts +1 -1
  158. package/src/adapter/converters/shader-formats.ts +1 -66
  159. package/src/adapter/converters/webgl-shadertypes.ts +1 -9
  160. package/src/adapter/converters/webgl-texture-table.ts +160 -68
  161. package/src/adapter/converters/webgl-vertex-formats.ts +1 -1
  162. package/src/adapter/device-helpers/webgl-device-features.ts +2 -3
  163. package/src/adapter/device-helpers/webgl-device-info.ts +7 -1
  164. package/src/adapter/device-helpers/webgl-device-limits.ts +1 -1
  165. package/src/adapter/helpers/format-utils.ts +1 -1
  166. package/src/adapter/helpers/get-shader-layout-from-glsl.ts +38 -20
  167. package/src/adapter/helpers/set-uniform.ts +1 -1
  168. package/src/adapter/helpers/webgl-texture-utils.ts +4 -4
  169. package/src/adapter/helpers/webgl-topology-utils.ts +1 -1
  170. package/src/adapter/resources/webgl-buffer.ts +17 -5
  171. package/src/adapter/resources/webgl-command-buffer.ts +28 -28
  172. package/src/adapter/resources/webgl-command-encoder.ts +28 -11
  173. package/src/adapter/resources/webgl-framebuffer.ts +12 -1
  174. package/src/adapter/resources/webgl-query-set.ts +295 -101
  175. package/src/adapter/resources/webgl-render-pass.ts +26 -13
  176. package/src/adapter/resources/webgl-render-pipeline.ts +101 -196
  177. package/src/adapter/resources/webgl-sampler.ts +1 -1
  178. package/src/adapter/resources/webgl-shader.ts +15 -8
  179. package/src/adapter/resources/webgl-shared-render-pipeline.ts +211 -0
  180. package/src/adapter/resources/webgl-texture.ts +324 -122
  181. package/src/adapter/resources/webgl-transform-feedback.ts +1 -1
  182. package/src/adapter/resources/webgl-vertex-array.ts +1 -1
  183. package/src/adapter/webgl-device.ts +50 -6
  184. package/src/adapter/webgl-presentation-context.ts +93 -0
  185. package/src/constants/index.d.ts.map +1 -0
  186. package/src/constants/index.js.map +1 -0
  187. package/src/constants/index.ts +31 -0
  188. package/src/constants/webgl-constants.d.ts.map +1 -0
  189. package/src/constants/webgl-constants.js.map +1 -0
  190. package/src/constants/webgl-constants.ts +1051 -0
  191. package/src/constants/webgl-types.d.ts.map +1 -0
  192. package/src/constants/webgl-types.js.map +1 -0
  193. package/src/constants/webgl-types.ts +813 -0
  194. package/src/context/debug/webgl-developer-tools.ts +1 -1
  195. package/src/context/helpers/webgl-context-data.ts +1 -1
  196. package/src/context/helpers/webgl-extensions.ts +1 -1
  197. package/src/context/parameters/unified-parameter-api.ts +1 -1
  198. package/src/context/parameters/webgl-parameter-tables.ts +1 -1
  199. package/src/context/polyfills/polyfill-webgl1-extensions.ts +1 -1
  200. package/src/index.ts +26 -0
  201. package/src/webgl-constants.d.ts.map +1 -0
  202. package/src/webgl-constants.js.map +1 -0
  203. package/src/webgl-constants.ts +5 -0
  204. package/src/webgl-types.d.ts.map +1 -0
  205. package/src/webgl-types.js.map +1 -0
  206. package/src/webgl-types.ts +29 -0
  207. package/dist/types.d.ts +0 -11
  208. package/dist/types.d.ts.map +0 -1
  209. package/dist/types.js.map +0 -1
  210. package/src/types.ts +0 -14
@@ -0,0 +1,813 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ /* eslint-disable camelcase */
6
+ import {GL} from './webgl-constants';
7
+
8
+ /** Type covering all typed arrays and classic arrays consisting of numbers */
9
+ export type NumericArray = TypedArray | number[];
10
+
11
+ /** Type covering classic arrays consisting of numbers */
12
+ export type NumberArray = number[];
13
+
14
+ /** TypeScript type covering all typed arrays */
15
+ export type TypedArray =
16
+ | Int8Array
17
+ | Uint8Array
18
+ | Int16Array
19
+ | Uint16Array
20
+ | Int32Array
21
+ | Uint32Array
22
+ | Uint8ClampedArray
23
+ | Float32Array
24
+ | Float64Array;
25
+
26
+ /** type covering all typed arrays and classic arrays consisting of numbers */
27
+
28
+ /** We don't know the type of Framebuffer at this stage */
29
+ type Framebuffer = unknown;
30
+
31
+ /** All possible texture targets */
32
+ export type GLTextureTarget =
33
+ | GL.TEXTURE_2D
34
+ | GL.TEXTURE_CUBE_MAP
35
+ | GL.TEXTURE_2D_ARRAY
36
+ | GL.TEXTURE_3D;
37
+
38
+ /** All possible cube face targets for textImage2D */
39
+ export type GLTextureCubeMapTarget =
40
+ | GL.TEXTURE_CUBE_MAP_POSITIVE_X
41
+ | GL.TEXTURE_CUBE_MAP_NEGATIVE_X
42
+ | GL.TEXTURE_CUBE_MAP_POSITIVE_Y
43
+ | GL.TEXTURE_CUBE_MAP_NEGATIVE_Y
44
+ | GL.TEXTURE_CUBE_MAP_POSITIVE_Z
45
+ | GL.TEXTURE_CUBE_MAP_NEGATIVE_Z;
46
+
47
+ /** Texel data formats for gl.texSubImage() */
48
+ export type GLTexelDataFormat =
49
+ | GL.ALPHA // Discards the red, green and blue components and reads the alpha component.
50
+ | GL.RGB // Discards the alpha components and reads the red, green and blue components.
51
+ | GL.RGBA // Red, green, blue and alpha components are read from the color buffer.
52
+ | GL.LUMINANCE // Each color component is a luminance component, alpha is 1.0.
53
+ | GL.LUMINANCE_ALPHA // Each component is a luminance/alpha component.
54
+ | GL.SRGB
55
+ // | GL.SRGB_ALPHA_EXT
56
+ | GL.RED
57
+ | GL.RG
58
+ | GL.RED_INTEGER
59
+ | GL.RG_INTEGER
60
+ | GL.RGB_INTEGER
61
+ | GL.RGBA_INTEGER
62
+ | GL.DEPTH_COMPONENT
63
+ | GL.DEPTH_STENCIL;
64
+
65
+ /** Rendering primitives. Constants passed to drawElements() or drawArrays() to specify what kind of primitive to render. */
66
+ export type GLPrimitiveTopology =
67
+ | GL.POINTS
68
+ | GL.LINES
69
+ | GL.LINE_STRIP
70
+ | GL.LINE_LOOP
71
+ | GL.TRIANGLES
72
+ | GL.TRIANGLE_STRIP
73
+ | GL.TRIANGLE_FAN;
74
+
75
+ /** Rendering primitives. Constants passed to transform feedback . */
76
+ export type GLPrimitive = GL.POINTS | GL.LINES | GL.TRIANGLES;
77
+
78
+ /** Data Type */
79
+ export type GLDataType =
80
+ | GL.FLOAT
81
+ | GL.UNSIGNED_SHORT
82
+ | GL.UNSIGNED_INT
83
+ | GL.UNSIGNED_BYTE
84
+ | GL.BYTE
85
+ | GL.SHORT
86
+ | GL.INT
87
+ | GL.HALF_FLOAT;
88
+
89
+ /** Pixel Data Type */
90
+ export type GLPixelType =
91
+ | GLDataType
92
+ | GL.UNSIGNED_SHORT_5_6_5
93
+ | GL.UNSIGNED_SHORT_4_4_4_4
94
+ | GL.UNSIGNED_SHORT_5_5_5_1
95
+ | GL.UNSIGNED_INT_2_10_10_10_REV
96
+ | GL.UNSIGNED_INT_10F_11F_11F_REV
97
+ | GL.UNSIGNED_INT_5_9_9_9_REV
98
+ | GL.UNSIGNED_INT_24_8
99
+ | GL.FLOAT_32_UNSIGNED_INT_24_8_REV;
100
+
101
+ /**
102
+ * Sampler uniform type
103
+ * @note These are all the valid sampler types used with `gl.uniform1i((location, value)`
104
+ */
105
+ export type GLSamplerType =
106
+ | GL.SAMPLER_2D
107
+ | GL.SAMPLER_CUBE
108
+ | GL.SAMPLER_3D
109
+ | GL.SAMPLER_2D_SHADOW
110
+ | GL.SAMPLER_2D_ARRAY
111
+ | GL.SAMPLER_2D_ARRAY_SHADOW
112
+ | GL.SAMPLER_CUBE_SHADOW
113
+ | GL.INT_SAMPLER_2D
114
+ | GL.INT_SAMPLER_3D
115
+ | GL.INT_SAMPLER_CUBE
116
+ | GL.INT_SAMPLER_2D_ARRAY
117
+ | GL.UNSIGNED_INT_SAMPLER_2D
118
+ | GL.UNSIGNED_INT_SAMPLER_3D
119
+ | GL.UNSIGNED_INT_SAMPLER_CUBE
120
+ | GL.UNSIGNED_INT_SAMPLER_2D_ARRAY;
121
+
122
+ /**
123
+ * Composite types table
124
+ * @note These are all the valid non-sampler uniform types,
125
+ * Different `gl.uniformXXX(location, value)` functions must be used depending on which composite type is being set.
126
+ */
127
+ export type GLUniformType =
128
+ | GL.FLOAT
129
+ | GL.FLOAT_VEC2
130
+ | GL.FLOAT_VEC3
131
+ | GL.FLOAT_VEC4
132
+ | GL.INT
133
+ | GL.INT_VEC2
134
+ | GL.INT_VEC3
135
+ | GL.INT_VEC4
136
+ | GL.UNSIGNED_INT
137
+ | GL.UNSIGNED_INT_VEC2
138
+ | GL.UNSIGNED_INT_VEC3
139
+ | GL.UNSIGNED_INT_VEC4
140
+ | GL.BOOL
141
+ | GL.BOOL_VEC2
142
+ | GL.BOOL_VEC3
143
+ | GL.BOOL_VEC4
144
+ | GL.FLOAT_MAT2
145
+ | GL.FLOAT_MAT2x3
146
+ | GL.FLOAT_MAT2x4
147
+ | GL.FLOAT_MAT3x2
148
+ | GL.FLOAT_MAT3
149
+ | GL.FLOAT_MAT3x4
150
+ | GL.FLOAT_MAT4x2
151
+ | GL.FLOAT_MAT4x3
152
+ | GL.FLOAT_MAT4;
153
+
154
+ /**
155
+ * Depth or stencil tests
156
+ * Constants passed to WebGLRenderingContext.depthFunc() or WebGLRenderingContext.stencilFunc().
157
+ */
158
+ export type GLFunction =
159
+ | GL.NEVER
160
+ | GL.LESS
161
+ | GL.EQUAL
162
+ | GL.LEQUAL
163
+ | GL.GREATER
164
+ | GL.NOTEQUAL
165
+ | GL.GEQUAL
166
+ | GL.ALWAYS;
167
+
168
+ export type GLBlendEquation =
169
+ | GL.FUNC_ADD
170
+ | GL.FUNC_SUBTRACT
171
+ | GL.FUNC_REVERSE_SUBTRACT
172
+ | GL.MIN
173
+ | GL.MAX;
174
+
175
+ export type GLBlendFunction =
176
+ | GL.ZERO
177
+ | GL.ONE
178
+ | GL.SRC_COLOR
179
+ | GL.ONE_MINUS_SRC_COLOR
180
+ | GL.DST_COLOR
181
+ | GL.ONE_MINUS_DST_COLOR
182
+ | GL.SRC_ALPHA
183
+ | GL.ONE_MINUS_SRC_ALPHA
184
+ | GL.DST_ALPHA
185
+ | GL.ONE_MINUS_DST_ALPHA
186
+ | GL.CONSTANT_COLOR
187
+ | GL.ONE_MINUS_CONSTANT_COLOR
188
+ | GL.CONSTANT_ALPHA
189
+ | GL.ONE_MINUS_CONSTANT_ALPHA
190
+ | GL.SRC_ALPHA_SATURATE;
191
+
192
+ /**
193
+ * Stencil actions
194
+ * Constants passed to WebGLRenderingContext.stencilOp().
195
+ */
196
+ export type GLStencilOp =
197
+ | GL.KEEP
198
+ | GL.ZERO
199
+ | GL.REPLACE
200
+ | GL.INCR
201
+ | GL.INCR_WRAP
202
+ | GL.DECR
203
+ | GL.DECR_WRAP
204
+ | GL.INVERT;
205
+
206
+ export type GLPolygonMode = GL.FILL_WEBGL | GL.LINE_WEBGL;
207
+ export type GLCullFaceMode = GL.FRONT | GL.BACK | GL.FRONT_AND_BACK;
208
+ export type GLProvokingVertex = GL.FIRST_VERTEX_CONVENTION_WEBGL | GL.LAST_VERTEX_CONVENTION_WEBGL;
209
+
210
+ /** Parameters for textures and samplers */
211
+ export type GLSamplerParameters = {
212
+ /** Sets the wrap parameter for texture coordinate to either GL_CLAMP_TO_EDGE, GL_MIRRORED_REPEAT, or GL_REPEAT. */
213
+ [GL.TEXTURE_WRAP_S]?: GL.CLAMP_TO_EDGE | GL.REPEAT | GL.MIRRORED_REPEAT;
214
+ /** Sets the wrap parameter for texture coordinate to either GL_CLAMP_TO_EDGE, GL_MIRRORED_REPEAT, or GL_REPEAT. */
215
+ [GL.TEXTURE_WRAP_T]?: GL.CLAMP_TO_EDGE | GL.REPEAT | GL.MIRRORED_REPEAT;
216
+ /** Sets the wrap parameter for texture coordinate to either GL_CLAMP_TO_EDGE, GL_MIRRORED_REPEAT, or GL_REPEAT. */
217
+ [GL.TEXTURE_WRAP_R]?: GL.CLAMP_TO_EDGE | GL.REPEAT | GL.MIRRORED_REPEAT;
218
+
219
+ /** The texture magnification function is used when the pixel being textured maps to an area less than or equal to one texture element. It sets the texture magnification function to either GL_NEAREST or GL_LINEAR (see below). GL_NEAREST is generally faster than GL_LINEAR, but it can produce textured images with sharper edges because the transition between texture elements is not as smooth. Default: GL_LINEAR. */
220
+ [GL.TEXTURE_MAG_FILTER]?: GL.NEAREST | GL.LINEAR;
221
+ /** The texture minifying function is used whenever the pixel being textured maps to an area greater than one texture element. There are six defined minifying functions. Two of them use the nearest one or nearest four texture elements to compute the texture value. The other four use mipmaps. Default: GL_NEAREST_MIPMAP_LINEAR */
222
+ [GL.TEXTURE_MIN_FILTER]?:
223
+ | GL.NEAREST
224
+ | GL.LINEAR
225
+ | GL.NEAREST_MIPMAP_NEAREST
226
+ | GL.NEAREST_MIPMAP_LINEAR
227
+ | GL.LINEAR_MIPMAP_NEAREST
228
+ | GL.LINEAR_MIPMAP_LINEAR;
229
+ /* A GLfloat indicating the minimum level-of-detail mipmap. */
230
+ [GL.TEXTURE_MIN_LOD]?: number;
231
+ /* A GLfloat indicating the minimum level-of-detail mipmap. */
232
+ [GL.TEXTURE_MAX_LOD]?: number;
233
+ /** Texture parameter TEXTURE_COMPARE_FUNC specifies the depth texture comparison function */
234
+ [GL.TEXTURE_COMPARE_FUNC]?: number; // COMPARE_FUNC);
235
+ /** Texture parameter TEXTURE_COMPARE_MODE specifies the depth texture comparison operands. */
236
+ [GL.TEXTURE_COMPARE_MODE]?: GL.COMPARE_REF_TO_TEXTURE;
237
+ /** Max anisotropy level */
238
+ [GL.TEXTURE_MAX_ANISOTROPY_EXT]?: number;
239
+ };
240
+
241
+ /**
242
+ * All global WebGL parameters
243
+ */
244
+ export type GLValueParameters = {
245
+ [GL.BLEND]?: boolean;
246
+ [GL.BLEND_COLOR]?: [number, number, number, number] | TypedArray;
247
+ [GL.BLEND_EQUATION_RGB]?: GLBlendEquation;
248
+ [GL.BLEND_EQUATION_ALPHA]?: GLBlendEquation;
249
+ [GL.BLEND_SRC_RGB]?: GLBlendFunction;
250
+ [GL.BLEND_DST_RGB]?: GLBlendFunction;
251
+ [GL.BLEND_SRC_ALPHA]?: GLBlendFunction;
252
+ [GL.BLEND_DST_ALPHA]?: GLBlendFunction;
253
+ [GL.COLOR_CLEAR_VALUE]?: [number, number, number, number] | TypedArray;
254
+ [GL.COLOR_WRITEMASK]?: [boolean, boolean, boolean, boolean] | boolean[];
255
+ [GL.CULL_FACE]?: boolean;
256
+ [GL.CULL_FACE_MODE]?: GL.FRONT | GL.BACK | GL.FRONT_AND_BACK;
257
+ [GL.DEPTH_TEST]?: boolean;
258
+ [GL.DEPTH_CLEAR_VALUE]?: number;
259
+ [GL.DEPTH_FUNC]?: GLFunction;
260
+ [GL.DEPTH_RANGE]?: [number, number] | TypedArray;
261
+ [GL.DEPTH_WRITEMASK]?: boolean;
262
+ [GL.DITHER]?: boolean;
263
+ [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]?: GL.FASTEST | GL.NICEST | GL.DONT_CARE;
264
+ [GL.CURRENT_PROGRAM]?: WebGLProgram | null;
265
+ [GL.FRAMEBUFFER_BINDING]?: WebGLFramebuffer | null;
266
+ [GL.RENDERBUFFER_BINDING]?: WebGLRenderbuffer | null;
267
+ [GL.TRANSFORM_FEEDBACK_BINDING]?: WebGLTransformFeedback | null;
268
+ [GL.VERTEX_ARRAY_BINDING]?: WebGLVertexArrayObject | null;
269
+ [GL.ARRAY_BUFFER_BINDING]?: WebGLBuffer | null;
270
+ [GL.COPY_READ_BUFFER_BINDING]?: WebGLBuffer | null;
271
+ [GL.COPY_WRITE_BUFFER_BINDING]?: WebGLBuffer | null;
272
+ [GL.PIXEL_PACK_BUFFER_BINDING]?: WebGLBuffer | null;
273
+ [GL.PIXEL_UNPACK_BUFFER_BINDING]?: WebGLBuffer | null;
274
+ [GL.TEXTURE_BINDING_2D]?: WebGLTexture | null;
275
+ [GL.TEXTURE_BINDING_2D_ARRAY]?: WebGLTexture | null;
276
+ [GL.TEXTURE_BINDING_3D]?: WebGLTexture | null;
277
+ [GL.TEXTURE_BINDING_CUBE_MAP]?: WebGLTexture | null;
278
+ [GL.FRONT_FACE]?: GL.CW | GL.CCW;
279
+ [GL.GENERATE_MIPMAP_HINT]?: GL.FASTEST | GL.NICEST | GL.DONT_CARE;
280
+ [GL.LINE_WIDTH]?: number;
281
+ [GL.POLYGON_OFFSET_FILL]?: boolean;
282
+ [GL.POLYGON_OFFSET_FACTOR]?: number;
283
+ [GL.POLYGON_OFFSET_UNITS]?: number;
284
+ [GL.SAMPLE_ALPHA_TO_COVERAGE]?: boolean;
285
+ [GL.SAMPLE_COVERAGE]?: boolean;
286
+ [GL.RASTERIZER_DISCARD]?: boolean;
287
+ [GL.SAMPLE_COVERAGE_VALUE]?: number;
288
+ [GL.SAMPLE_COVERAGE_INVERT]?: boolean;
289
+ [GL.SCISSOR_TEST]?: boolean;
290
+ [GL.SCISSOR_BOX]?: [number, number, number, number] | TypedArray;
291
+ [GL.STENCIL_TEST]?: boolean;
292
+ [GL.STENCIL_CLEAR_VALUE]?: number;
293
+ [GL.STENCIL_WRITEMASK]?: number;
294
+ [GL.STENCIL_BACK_WRITEMASK]?: number;
295
+ [GL.STENCIL_FUNC]?: GLFunction;
296
+ [GL.STENCIL_REF]?: number;
297
+ [GL.STENCIL_VALUE_MASK]?: number;
298
+ [GL.STENCIL_BACK_FUNC]?: GLFunction;
299
+ [GL.STENCIL_BACK_REF]?: number;
300
+ [GL.STENCIL_BACK_VALUE_MASK]?: number;
301
+ [GL.STENCIL_FAIL]?: GLStencilOp;
302
+ [GL.STENCIL_PASS_DEPTH_FAIL]?: GLStencilOp;
303
+ [GL.STENCIL_PASS_DEPTH_PASS]?: GLStencilOp;
304
+ [GL.STENCIL_BACK_FAIL]?: GLStencilOp;
305
+ [GL.STENCIL_BACK_PASS_DEPTH_FAIL]?: GLStencilOp;
306
+ [GL.STENCIL_BACK_PASS_DEPTH_PASS]?: GLStencilOp;
307
+ [GL.VIEWPORT]?: [number, number, number, number] | TypedArray;
308
+
309
+ [GL.READ_FRAMEBUFFER_BINDING]?: Framebuffer | null;
310
+
311
+ [GL.PACK_ALIGNMENT]?: number;
312
+ [GL.PACK_ROW_LENGTH]?: number;
313
+ [GL.PACK_SKIP_PIXELS]?: number;
314
+ [GL.PACK_SKIP_ROWS]?: number;
315
+
316
+ [GL.UNPACK_ALIGNMENT]?: 1 | 2 | 4 | 8;
317
+ [GL.UNPACK_FLIP_Y_WEBGL]?: boolean;
318
+ [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]?: boolean;
319
+ [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]?: GL.NONE | GL.BROWSER_DEFAULT_WEBGL;
320
+ [GL.UNPACK_ROW_LENGTH]?: number;
321
+ [GL.UNPACK_IMAGE_HEIGHT]?: number;
322
+ [GL.UNPACK_SKIP_PIXELS]?: number;
323
+ [GL.UNPACK_SKIP_ROWS]?: number;
324
+ [GL.UNPACK_SKIP_IMAGES]?: number;
325
+ };
326
+
327
+ export type GLPackParameters = {
328
+ [GL.PACK_ALIGNMENT]?: 1 | 2 | 4 | 8;
329
+ [GL.PACK_ROW_LENGTH]?: number;
330
+ [GL.PACK_SKIP_PIXELS]?: number;
331
+ [GL.PACK_SKIP_ROWS]?: number;
332
+ };
333
+
334
+ export type GLUnpackParameters = {
335
+ [GL.UNPACK_ALIGNMENT]?: number;
336
+ [GL.UNPACK_FLIP_Y_WEBGL]?: boolean;
337
+ [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]?: boolean;
338
+ [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]?: GL.NONE | GL.BROWSER_DEFAULT_WEBGL;
339
+ [GL.UNPACK_ROW_LENGTH]?: number;
340
+ [GL.UNPACK_IMAGE_HEIGHT]?: number;
341
+ [GL.UNPACK_SKIP_PIXELS]?: number;
342
+ [GL.UNPACK_SKIP_ROWS]?: number;
343
+ [GL.UNPACK_SKIP_IMAGES]?: number;
344
+ };
345
+
346
+ /**
347
+ * Function style WebGL parameters used by luma.gl
348
+ * @todo Should perhaps be defined in webgl module
349
+ */
350
+ export type GLFunctionParameters = {
351
+ // Function-style setters
352
+ framebuffer?: Framebuffer | null;
353
+ blend?: boolean;
354
+ blendColor?: [number, number, number, number] | TypedArray;
355
+ blendEquation?: GLBlendEquation | [GLBlendEquation, GLBlendEquation];
356
+ /* defines which function is used for blending pixel arithmetic. Defaults to one and zero */
357
+ blendFunc?:
358
+ | [GLBlendFunction, GLBlendFunction]
359
+ | [GLBlendFunction, GLBlendFunction, GLBlendFunction, GLBlendFunction];
360
+
361
+ clearColor?: [number, number, number, number] | TypedArray;
362
+ clearDepth?: number;
363
+ clearStencil?: number;
364
+
365
+ colorMask?: [boolean, boolean, boolean, boolean] | boolean[];
366
+
367
+ cull?: boolean;
368
+ cullFace?: GL.FRONT | GL.BACK | GL.FRONT_AND_BACK;
369
+
370
+ depthTest?: boolean;
371
+ depthFunc?: GLFunction;
372
+ /** Specifies whether writing into the depth buffer is enabled. Default true, i.e. writing is enabled. */
373
+ depthMask?: boolean;
374
+ depthRange?: [number, number] | TypedArray;
375
+
376
+ dither?: boolean;
377
+
378
+ derivativeHint?: GL.FASTEST | GL.NICEST | GL.DONT_CARE;
379
+
380
+ frontFace?: GL.CW | GL.CCW;
381
+
382
+ mipmapHint?: GL.FASTEST | GL.NICEST | GL.DONT_CARE;
383
+
384
+ lineWidth?: number;
385
+
386
+ polygonOffsetFill?: boolean;
387
+ polygonOffset?: [number, number] | TypedArray;
388
+
389
+ sampleCoverage?: [number, boolean];
390
+
391
+ scissorTest?: boolean;
392
+ scissor?: [number, number, number, number] | TypedArray;
393
+
394
+ stencilTest?: boolean;
395
+ /** Bit mask to enable or disable writing of individual bits in the stencil planes. By default, the mask is all 1. */
396
+ stencilMask?: number | [number, number] | TypedArray;
397
+ stencilFunc?:
398
+ | [GLFunction, number, number]
399
+ | [GLFunction, number, number, GLFunction, number, number];
400
+ stencilOp?:
401
+ | [GLStencilOp, GLStencilOp, GLStencilOp]
402
+ | [GLStencilOp, GLStencilOp, GLStencilOp, GLStencilOp, GLStencilOp, GLStencilOp];
403
+ viewport?: [number, number, number, number] | TypedArray;
404
+ };
405
+
406
+ /** WebGL style parameters object (with both GL constants and function style fields) */
407
+ export type GLParameters = GLValueParameters & GLFunctionParameters;
408
+
409
+ /** WebGL context limits */
410
+ export type GLLimits = {
411
+ [GL.ALIASED_LINE_WIDTH_RANGE]: [number, number];
412
+ [GL.ALIASED_POINT_SIZE_RANGE]: [number, number];
413
+ [GL.MAX_TEXTURE_SIZE]: number;
414
+ [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: number;
415
+ [GL.MAX_TEXTURE_IMAGE_UNITS]: number;
416
+ [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: number;
417
+ [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: number;
418
+ [GL.MAX_RENDERBUFFER_SIZE]: number;
419
+ [GL.MAX_VARYING_VECTORS]: number;
420
+ [GL.MAX_VERTEX_ATTRIBS]: number;
421
+ [GL.MAX_VERTEX_UNIFORM_VECTORS]: number;
422
+ [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: number;
423
+ [GL.MAX_VIEWPORT_DIMS]: [number, number];
424
+
425
+ // Extensions
426
+ [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: number;
427
+
428
+ // WebGL2 Limits
429
+ [GL.MAX_3D_TEXTURE_SIZE]: number;
430
+ [GL.MAX_ARRAY_TEXTURE_LAYERS]: number;
431
+ // [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: number;
432
+ [GL.MAX_COLOR_ATTACHMENTS]: number;
433
+ [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: number;
434
+ [GL.MAX_COMBINED_UNIFORM_BLOCKS]: number;
435
+ [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: number;
436
+ [GL.MAX_DRAW_BUFFERS]: number;
437
+ [GL.MAX_ELEMENT_INDEX]: number;
438
+ [GL.MAX_ELEMENTS_INDICES]: number;
439
+ [GL.MAX_ELEMENTS_VERTICES]: number;
440
+ [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: number;
441
+ [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: number;
442
+ [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: number;
443
+ [GL.MAX_SAMPLES]: number;
444
+ // [GL.MAX_SERVER_WAIT_TIMEOUT]: number;
445
+ [GL.MAX_TEXTURE_LOD_BIAS]: number;
446
+ [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: number;
447
+ [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: number;
448
+ [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: number;
449
+ [GL.MAX_UNIFORM_BLOCK_SIZE]: number;
450
+ [GL.MAX_UNIFORM_BUFFER_BINDINGS]: number;
451
+ [GL.MAX_VARYING_COMPONENTS]: number;
452
+ [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: number;
453
+ [GL.MAX_VERTEX_UNIFORM_BLOCKS]: number;
454
+ [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: number;
455
+ [GL.MIN_PROGRAM_TEXEL_OFFSET]: number;
456
+ [GL.MAX_PROGRAM_TEXEL_OFFSET]: number;
457
+ [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: number;
458
+
459
+ // EXTENSIONS
460
+ /** Max clip distances */
461
+ MAX_CLIP_DISTANCES_WEBGL: number;
462
+ /** Max cull distances */
463
+ MAX_CULL_DISTANCES_WEBGL: number;
464
+ /** Max clip and cull distances */
465
+ MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL: number;
466
+ MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL: number;
467
+ };
468
+
469
+ /** WebGL2 Extensions */
470
+ export type GLExtensions = {
471
+ /** https://registry.khronos.org/webgl/extensions/EXT_color_buffer_float */
472
+ EXT_color_buffer_float?: EXT_color_buffer_float | null;
473
+ /** https://registry.khronos.org/webgl/extensions/EXT_color_buffer_half_float */
474
+ EXT_color_buffer_half_float?: EXT_color_buffer_half_float | null;
475
+ /** https://registry.khronos.org/webgl/extensions/EXT_texture_compression_bptc */
476
+ EXT_texture_compression_bptc?: EXT_texture_compression_bptc | null;
477
+ /** https://registry.khronos.org/webgl/extensions/EXT_texture_compression_rgtc */
478
+ EXT_texture_compression_rgtc?: EXT_texture_compression_rgtc | null;
479
+ /** https://registry.khronos.org/webgl/extensions/EXT_texture_filter_anisotropic */
480
+ EXT_texture_filter_anisotropic?: EXT_texture_filter_anisotropic | null;
481
+ /** https://registry.khronos.org/webgl/extensions/KHR_parallel_shader_compile */
482
+ KHR_parallel_shader_compile?: KHR_parallel_shader_compile | null;
483
+ /** https://registry.khronos.org/webgl/extensions/OES_fbo_render_mipmap */
484
+ OES_fbo_render_mipmap?: OES_fbo_render_mipmap | null;
485
+ /** https://registry.khronos.org/webgl/extensions/OES_texture_float */
486
+ OES_texture_float?: OES_texture_float | null;
487
+ /** https://registry.khronos.org/webgl/extensions/OES_texture_float_linear */
488
+ OES_texture_float_linear?: OES_texture_float_linear | null;
489
+ /** https://registry.khronos.org/webgl/extensions/OES_texture_half_float */
490
+ OES_texture_half_float?: OES_texture_half_float | null;
491
+ /** https://registry.khronos.org/webgl/extensions/OES_texture_half_float_linear */
492
+ OES_texture_half_float_linear?: OES_texture_half_float_linear | null;
493
+ /** https://registry.khronos.org/webgl/extensions/OES_vertex_array_object */
494
+ OES_vertex_array_object?: OES_vertex_array_object | null;
495
+ /** https://registry.khronos.org/webgl/extensions/EXT_float_blend */
496
+ EXT_float_blend?: EXT_float_blend | null;
497
+ /** https://registry.khronos.org/webgl/extensions/OVR_multiview2 */
498
+ OVR_multiview2?: OVR_multiview2 | null;
499
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc */
500
+ WEBGL_compressed_texture_astc?: WEBGL_compressed_texture_astc | null;
501
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc */
502
+ WEBGL_compressed_texture_etc?: WEBGL_compressed_texture_etc | null;
503
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc1 */
504
+ WEBGL_compressed_texture_etc1?: WEBGL_compressed_texture_etc1 | null;
505
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_pvrtc */
506
+ WEBGL_compressed_texture_pvrtc?: WEBGL_compressed_texture_pvrtc | null;
507
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc */
508
+ WEBGL_compressed_texture_s3tc?: WEBGL_compressed_texture_s3tc | null;
509
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb */
510
+ WEBGL_compressed_texture_s3tc_srgb?: WEBGL_compressed_texture_s3tc_srgb | null;
511
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_debug_renderer_info */
512
+ WEBGL_debug_renderer_info?: WEBGL_debug_renderer_info | null;
513
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_debug_shaders */
514
+ WEBGL_debug_shaders?: WEBGL_debug_shaders | null;
515
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_lose_context */
516
+ WEBGL_lose_context?: WEBGL_lose_context | null;
517
+
518
+ // Predefined typescript types not available for the following extensions
519
+
520
+ /** https://registry.khronos.org/webgl/extensions/EXT_norm16/ */
521
+ EXT_norm16?: EXT_norm16 | null;
522
+ /** https://registry.khronos.org/webgl/extensions/EXT_snorm/ */
523
+ EXT_snorm?: EXT_snorm | null;
524
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_render_shared_exponent/ */
525
+ WEBGL_render_shared_exponent?: WEBGL_render_shared_exponent | null;
526
+
527
+ /** https://registry.khronos.org/webgl/extensions/EXT_depth_clamp/ */
528
+ EXT_depth_clamp?: EXT_depth_clamp | null;
529
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_provoking_vertex/ */
530
+ WEBGL_provoking_vertex?: WEBGL_provoking_vertex | null;
531
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_polygon_mode/ */
532
+ WEBGL_polygon_mode?: WEBGL_polygon_mode | null;
533
+
534
+ /** WEBGL_clip_cull_distance https://registry.khronos.org/webgl/extensions/WEBGL_clip_cull_distance/ */
535
+ WEBGL_clip_cull_distance?: WEBGL_clip_cull_distance | null;
536
+
537
+ /** NV_shader_noperspective_interpolation https://registry.khronos.org/webgl/extensions/NV_shader_noperspective_interpolation/ */
538
+ NV_shader_noperspective_interpolation?: NV_shader_noperspective_interpolation | null;
539
+
540
+ /** EXT_conservative_depth https://registry.khronos.org/webgl/extensions/EXT_conservative_depth/ */
541
+ EXT_conservative_depth?: EXT_conservative_depth | null;
542
+
543
+ /** OES_sample_variables https://registry.khronos.org/webgl/extensions/OES_sample_variables/ */
544
+ OES_sample_variables?: OES_sample_variables | null;
545
+
546
+ /** EXT_polygon_offset_clamp https://registry.khronos.org/webgl/extensions/EXT_polygon_offset_clamp/ */
547
+ EXT_polygon_offset_clamp?: EXT_polygon_offset_clamp | null;
548
+
549
+ /** EXT_clip_control https://registry.khronos.org/webgl/extensions/EXT_clip_control/ */
550
+ EXT_clip_control?: EXT_clip_control | null;
551
+
552
+ /** EXT_texture_mirror_clamp_to_edge https://registry.khronos.org/webgl/extensions/EXT_texture_mirror_clamp_to_edge/ */
553
+ EXT_texture_mirror_clamp_to_edge?: EXT_texture_mirror_clamp_to_edge | null;
554
+ /** EXT_texture_mirror_clamp_to_edge https://registry.khronos.org/webgl/extensions/EXT_texture_mirror_clamp_to_edge/ */
555
+ WEBGL_stencil_texturing?: WEBGL_stencil_texturing | null;
556
+
557
+ /** WEBGL_blend_func_extended https://registry.khronos.org/webgl/extensions/WEBGL_blend_func_extended/ */
558
+ WEBGL_blend_func_extended?: WEBGL_blend_func_extended | null;
559
+
560
+ /** OES_draw_buffers_indexed https://registry.khronos.org/webgl/extensions/OES_draw_buffers_indexed/ */
561
+ OES_draw_buffers_indexed?: OES_draw_buffers_indexed | null;
562
+
563
+ /** WEBGL_draw_instanced_base_vertex_base_instance https://registry.khronos.org/webgl/extensions/WEBGL_draw_instanced_base_vertex_base_instance/ */
564
+ WEBGL_draw_instanced_base_vertex_base_instance?: WEBGL_draw_instanced_base_vertex_base_instance | null;
565
+ /** WEBGL_multi_draw https://registry.khronos.org/webgl/extensions/WEBGL_multi_draw/ */
566
+ WEBGL_multi_draw?: WEBGL_multi_draw | null;
567
+ /** WEBGL_multi_draw_instanced_base_vertex_base_instance https://registry.khronos.org/webgl/extensions/WEBGL_multi_draw_instanced_base_vertex_base_instance/ */
568
+ WEBGL_multi_draw_instanced_base_vertex_base_instance?: WEBGL_multi_draw_instanced_base_vertex_base_instance | null;
569
+ /** WEBGL_shader_pixel_local_storage https://registry.khronos.org/webgl/extensions/WEBGL_shader_pixel_local_storage/ */
570
+ WEBGL_shader_pixel_local_storage?: WEBGL_shader_pixel_local_storage | null;
571
+
572
+ // WEBGL1 extensions (available as built-in WebGL 2 APIs)
573
+ // ANGLE_instanced_arrays?: ANGLE_instanced_arrays | null;
574
+ // EXT_blend_minmax?: EXT_blend_minmax | null;
575
+ // EXT_frag_depth?: EXT_frag_depth | null;
576
+ // EXT_sRGB?: EXT_sRGB | null;
577
+ // EXT_shader_texture_lod?: EXT_shader_texture_lod | null;
578
+ // OES_element_index_uint?: OES_element_index_uint | null;
579
+ // OES_standard_derivatives?: OES_standard_derivatives | null;
580
+ // WEBGL_color_buffer_float?: WEBGL_color_buffer_float | null;
581
+ // WEBGL_depth_texture?: WEBGL_depth_texture | null;
582
+ // WEBGL_draw_buffers?: WEBGL_draw_buffers | null;
583
+ // WEBGL_multi_draw?: WEBGL_multi_draw | null;
584
+ };
585
+
586
+ /** https://registry.khronos.org/webgl/extensions/EXT_norm16/ */
587
+ type EXT_norm16 = {
588
+ // Constants in GL enum
589
+ };
590
+
591
+ /** https://registry.khronos.org/webgl/extensions/EXT_snorm/ */
592
+ type EXT_snorm = {
593
+ // Constants in GL enum
594
+ };
595
+
596
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_render_shared_exponent/ */
597
+ type WEBGL_render_shared_exponent = {
598
+ // Constants in GL enum
599
+ };
600
+
601
+ /** https://registry.khronos.org/webgl/extensions/EXT_depth_clamp/ */
602
+ type EXT_depth_clamp = {
603
+ // Constants in GL enum
604
+ };
605
+
606
+ /** https://registry.khronos.org/webgl/extensions/WEBGL_provoking_vertex/ */
607
+ type WEBGL_provoking_vertex = {
608
+ // Constants in GL enum
609
+ /** Set the provoking vertex */
610
+ provokingVertexWEBGL(
611
+ provokeMode: GL.FIRST_VERTEX_CONVENTION_WEBGL | GL.LAST_VERTEX_CONVENTION_WEBGL
612
+ ): void;
613
+ };
614
+
615
+ /** WEBGL_polygon_mode https://registry.khronos.org/webgl/extensions/WEBGL_polygon_mode/ */
616
+ type WEBGL_polygon_mode = {
617
+ /** Set polygon mode of face to fill or line */
618
+ polygonModeWEBGL(face: GL.FRONT | GL.BACK, mode: GL.LINE_WEBGL | GL.FILL_WEBGL): void;
619
+ };
620
+
621
+ /** WEBGL_clip_cull_distance https://registry.khronos.org/webgl/extensions/WEBGL_clip_cull_distance/ */
622
+ type WEBGL_clip_cull_distance = {
623
+ /** Max clip distances */
624
+ MAX_CLIP_DISTANCES_WEBGL: 0x0d32;
625
+ /** Max cull distances */
626
+ MAX_CULL_DISTANCES_WEBGL: 0x82f9;
627
+ /** Max clip and cull distances */
628
+ MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL: 0x82fa;
629
+
630
+ /** Enable gl_ClipDistance[0] and gl_CullDistance[0] */
631
+ CLIP_DISTANCE0_WEBGL: 0x3000;
632
+ /** Enable gl_ClipDistance[1] and gl_CullDistance[1] */
633
+ CLIP_DISTANCE1_WEBGL: 0x3001;
634
+ /** Enable gl_ClipDistance[2] and gl_CullDistance[2] */
635
+ CLIP_DISTANCE2_WEBGL: 0x3002;
636
+ /** Enable gl_ClipDistance[3] and gl_CullDistance[3] */
637
+ CLIP_DISTANCE3_WEBGL: 0x3003;
638
+ /** Enable gl_ClipDistance[4] and gl_CullDistance[4] */
639
+ CLIP_DISTANCE4_WEBGL: 0x3004;
640
+ /** Enable gl_ClipDistance[5] and gl_CullDistance[5] */
641
+ CLIP_DISTANCE5_WEBGL: 0x3005;
642
+ /** Enable gl_ClipDistance[6] and gl_CullDistance[6] */
643
+ CLIP_DISTANCE6_WEBGL: 0x3006;
644
+ /** Enable gl_ClipDistance[7] and gl_CullDistance[7] */
645
+ CLIP_DISTANCE7_WEBGL: 0x3007;
646
+ };
647
+
648
+ /** NV_shader_noperspective_interpolation https://registry.khronos.org/webgl/extensions/NV_shader_noperspective_interpolation/ */
649
+ type NV_shader_noperspective_interpolation = {};
650
+
651
+ /** EXT_conservative_depth https://registry.khronos.org/webgl/extensions/EXT_conservative_depth/ */
652
+ type EXT_conservative_depth = {};
653
+
654
+ /** OES_sample_variables https://registry.khronos.org/webgl/extensions/OES_sample_variables/ */
655
+ type OES_sample_variables = {};
656
+
657
+ /** EXT_polygon_offset_clamp https://registry.khronos.org/webgl/extensions/EXT_polygon_offset_clamp/ */
658
+ type EXT_polygon_offset_clamp = {
659
+ POLYGON_OFFSET_CLAMP_EXT: 0x8e1b;
660
+
661
+ polygonOffsetClampEXT(factor: number, units: number, clamp: number): void;
662
+ };
663
+
664
+ /** EXT_clip_control https://registry.khronos.org/webgl/extensions/EXT_clip_control/ */
665
+ type EXT_clip_control = {
666
+ LOWER_LEFT_EXT: 0x8ca1;
667
+ UPPER_LEFT_EXT: 0x8ca2;
668
+
669
+ NEGATIVE_ONE_TO_ONE_EXT: 0x935e;
670
+ ZERO_TO_ONE_EXT: 0x935f;
671
+
672
+ CLIP_ORIGIN_EXT: 0x935c;
673
+ CLIP_DEPTH_MODE_EXT: 0x935d;
674
+
675
+ clipControlEXT(origin: GL, depth: GL): void;
676
+ };
677
+
678
+ /** WEBGL_blend_func_extended https://registry.khronos.org/webgl/extensions/WEBGL_blend_func_extended/ */
679
+ type WEBGL_blend_func_extended = {
680
+ SRC1_COLOR_WEBGL: 0x88f9;
681
+ SRC1_ALPHA_WEBGL: 0x8589;
682
+ ONE_MINUS_SRC1_COLOR_WEBGL: 0x88fa;
683
+ ONE_MINUS_SRC1_ALPHA_WEBGL: 0x88fb;
684
+ MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL: 0x88fc;
685
+ };
686
+
687
+ /** OES_draw_buffers_indexed https://registry.khronos.org/webgl/extensions/OES_draw_buffers_indexed/ */
688
+ type OES_draw_buffers_indexed = {
689
+ /** Enables blending for an individual draw buffer */
690
+ enableiOES(target: GL, index: number): void;
691
+ /** Disables blending for an individual draw buffer */
692
+ disableiOES(target: GL, index: number): void;
693
+ /** Modifies blend equation for an individual draw buffer */
694
+ blendEquationiOES(buf: number, mode: GL): void;
695
+ /** Modifies blend equation for an individual draw buffer */
696
+ blendEquationSeparateiOES(buf: number, modeRGB: GL, modeAlpha: GL): void;
697
+ /** Modifies blend function for an individual draw buffer */
698
+ blendFunciOES(buf: number, src: GL, dst: GL): void;
699
+ /** Modifies blend function for an individual draw buffer */
700
+ blendFuncSeparateiOES(buf: number, srcRGB: GL, dstRGB: GL, srcAlpha: GL, dstAlpha: GL): void;
701
+ /** Modifies color mask for an individual draw buffer */
702
+ colorMaskiOES(buf: number, r: boolean, g: boolean, b: boolean, a: boolean): void;
703
+ };
704
+
705
+ /** EXT_texture_mirror_clamp_to_edge https://registry.khronos.org/webgl/extensions/EXT_texture_mirror_clamp_to_edge/ */
706
+ type EXT_texture_mirror_clamp_to_edge = {
707
+ MIRROR_CLAMP_TO_EDGE_EXT: 0x8743;
708
+ };
709
+
710
+ /** WEBGL_stencil_texturing https://registry.khronos.org/webgl/extensions/WEBGL_stencil_texturing/ */
711
+ type WEBGL_stencil_texturing = {
712
+ DEPTH_STENCIL_TEXTURE_MODE_WEBGL: 0x90ea;
713
+ STENCIL_INDEX_WEBGL: 0x1901;
714
+ };
715
+
716
+ /** WEBGL_draw_instanced_base_vertex_base_instance https://registry.khronos.org/webgl/extensions/WEBGL_draw_instanced_base_vertex_base_instance/ */
717
+ type WEBGL_draw_instanced_base_vertex_base_instance = {
718
+ // drawArraysInstancedBaseInstanceWEBGL(
719
+ // GLenum mode, GLint first, GLsizei count,
720
+ // GLsizei instanceCount, GLuint baseInstance);
721
+ // drawElementsInstancedBaseVertexBaseInstanceWEBGL(
722
+ // GLenum mode, GLsizei count, GLenum type, GLintptr offset,
723
+ // GLsizei instanceCount, GLint baseVertex, GLuint baseInstance);
724
+ };
725
+
726
+ /** WEBGL_multi_draw https://registry.khronos.org/webgl/extensions/WEBGL_multi_draw/ */
727
+ type WEBGL_multi_draw = {
728
+ // multiDrawArraysWEBGL(
729
+ // GLenum mode,
730
+ // ([AllowShared] Int32Array or sequence<GLint>) firstsList, unsigned long long firstsOffset,
731
+ // ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
732
+ // GLsizei drawcount);
733
+ // multiDrawElementsWEBGL(
734
+ // GLenum mode,
735
+ // ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
736
+ // GLenum type,
737
+ // ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, unsigned long long offsetsOffset,
738
+ // GLsizei drawcount);
739
+ // multiDrawArraysInstancedWEBGL(
740
+ // GLenum mode,
741
+ // ([AllowShared] Int32Array or sequence<GLint>) firstsList, unsigned long long firstsOffset,
742
+ // ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
743
+ // ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, unsigned long long instanceCountsOffset,
744
+ // GLsizei drawcount);
745
+ // multiDrawElementsInstancedWEBGL(
746
+ // GLenum mode,
747
+ // ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
748
+ // GLenum type,
749
+ // ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, unsigned long long offsetsOffset,
750
+ // ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, unsigned long long instanceCountsOffset,
751
+ // GLsizei drawcount);
752
+ };
753
+
754
+ /** WEBGL_multi_draw_instanced_base_vertex_base_instance https://registry.khronos.org/webgl/extensions/WEBGL_multi_draw_instanced_base_vertex_base_instance/ */
755
+ type WEBGL_multi_draw_instanced_base_vertex_base_instance = {
756
+ // multiDrawArraysInstancedBaseInstanceWEBGL(
757
+ // GLenum mode,
758
+ // ([AllowShared] Int32Array or sequence<GLint>) firstsList, unsigned long long firstsOffset,
759
+ // ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
760
+ // ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, unsigned long long instanceCountsOffset,
761
+ // ([AllowShared] Uint32Array or sequence<GLuint>) baseInstancesList, unsigned long long baseInstancesOffset,
762
+ // GLsizei drawcount
763
+ // );
764
+ // multiDrawElementsInstancedBaseVertexBaseInstanceWEBGL(
765
+ // GLenum mode,
766
+ // ([AllowShared] Int32Array or sequence<GLsizei>) countsList, unsigned long long countsOffset,
767
+ // GLenum type,
768
+ // ([AllowShared] Int32Array or sequence<GLsizei>) offsetsList, unsigned long long offsetsOffset,
769
+ // ([AllowShared] Int32Array or sequence<GLsizei>) instanceCountsList, unsigned long long instanceCountsOffset,
770
+ // ([AllowShared] Int32Array or sequence<GLint>) baseVerticesList, unsigned long long baseVerticesOffset,
771
+ // ([AllowShared] Uint32Array or sequence<GLuint>) baseInstancesList, unsigned long long baseInstancesOffset,
772
+ // GLsizei drawcount
773
+ // );
774
+ };
775
+
776
+ /** WEBGL_shader_pixel_local_storage https://registry.khronos.org/webgl/extensions/WEBGL_shader_pixel_local_storage/ */
777
+ type WEBGL_shader_pixel_local_storage = {
778
+ MAX_PIXEL_LOCAL_STORAGE_PLANES_WEBGL: 0x96e0;
779
+ MAX_COLOR_ATTACHMENTS_WITH_ACTIVE_PIXEL_LOCAL_STORAGE_WEBGL: 0x96e1;
780
+ MAX_COMBINED_DRAW_BUFFERS_AND_PIXEL_LOCAL_STORAGE_PLANES_WEBGL: 0x96e2;
781
+ PIXEL_LOCAL_STORAGE_ACTIVE_PLANES_WEBGL: 0x96e3;
782
+ LOAD_OP_ZERO_WEBGL: 0x96e4;
783
+ LOAD_OP_CLEAR_WEBGL: 0x96e5;
784
+ LOAD_OP_LOAD_WEBGL: 0x96e6;
785
+ STORE_OP_STORE_WEBGL: 0x96e7;
786
+ PIXEL_LOCAL_FORMAT_WEBGL: 0x96e8;
787
+ PIXEL_LOCAL_TEXTURE_NAME_WEBGL: 0x96e9;
788
+ PIXEL_LOCAL_TEXTURE_LEVEL_WEBGL: 0x96ea;
789
+ PIXEL_LOCAL_TEXTURE_LAYER_WEBGL: 0x96eb;
790
+ PIXEL_LOCAL_CLEAR_VALUE_FLOAT_WEBGL: 0x96ec;
791
+ PIXEL_LOCAL_CLEAR_VALUE_INT_WEBGL: 0x96ed;
792
+ PIXEL_LOCAL_CLEAR_VALUE_UNSIGNED_INT_WEBGL: 0x96ee;
793
+ isCoherent(): boolean;
794
+ framebufferTexturePixelLocalStorageWEBGL(
795
+ plane: number,
796
+ texture: WebGLTexture,
797
+ level: number,
798
+ layer: number
799
+ ): void;
800
+ // framebufferPixelLocalClearValuefvWEBGL(plane: number,
801
+ // Float32List value,
802
+ // optional unsigned long long srcOffset = 0): void;
803
+ // framebufferPixelLocalClearValueivWEBGL(plane: number,
804
+ // Int32List value,
805
+ // optional unsigned long long srcOffset = 0): void;
806
+ // framebufferPixelLocalClearValueuivWEBGL(plane: number,
807
+ // Uint32List value,
808
+ // optional unsigned long long srcOffset = 0): void;
809
+ beginPixelLocalStorageWEBGL(loadops: GL[]): void;
810
+ endPixelLocalStorageWEBGL(storeops: GL[]): void;
811
+ pixelLocalStorageBarrierWEBGL(): void;
812
+ getFramebufferPixelLocalStorageParameterWEBGL(plane: number, pname: GL): any;
813
+ };