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

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 (181) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +71 -11
  3. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/sampler-parameters.js +3 -2
  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 +10 -7
  8. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  9. package/dist/adapter/converters/texture-formats.js +76 -64
  10. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  11. package/dist/adapter/converters/vertex-formats.js +2 -1
  12. package/dist/adapter/device-helpers/webgl-device-features.d.ts +18 -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 +77 -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 +17 -14
  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 +2 -1
  23. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  24. package/dist/adapter/helpers/get-shader-layout.js +6 -5
  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 +2 -1
  29. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  30. package/dist/adapter/helpers/webgl-topology-utils.js +2 -1
  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 +24 -11
  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 -100
  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 +2 -1
  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 +7 -6
  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 +3 -2
  49. package/dist/adapter/resources/webgl-framebuffer.d.ts +6 -8
  50. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-framebuffer.js +25 -23
  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 +15 -7
  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 +34 -49
  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 +3 -2
  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 +12 -6
  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 +4 -3
  71. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  72. package/dist/adapter/resources/webgl-texture.js +12 -7
  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 +2 -2
  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 +5 -4
  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 +29 -27
  83. package/dist/adapter/webgl-device.d.ts.map +1 -1
  84. package/dist/adapter/webgl-device.js +90 -94
  85. package/dist/classic/accessor.d.ts.map +1 -1
  86. package/dist/classic/accessor.js +4 -3
  87. package/dist/classic/clear.d.ts.map +1 -1
  88. package/dist/classic/clear.js +3 -2
  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 +5 -4
  92. package/dist/classic/format-utils.d.ts +2 -2
  93. package/dist/classic/format-utils.d.ts.map +1 -1
  94. package/dist/classic/format-utils.js +2 -1
  95. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  96. package/dist/classic/typed-array-utils.js +2 -1
  97. package/dist/context/debug/spector.d.ts.map +1 -1
  98. package/dist/context/debug/spector.js +2 -1
  99. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  100. package/dist/context/debug/webgl-developer-tools.js +7 -6
  101. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  102. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  103. package/dist/context/helpers/create-browser-context.js +67 -0
  104. package/dist/context/helpers/webgl-context-data.d.ts +13 -0
  105. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  106. package/dist/context/helpers/webgl-context-data.js +21 -0
  107. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  108. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  109. package/dist/context/helpers/webgl-extensions.js +10 -0
  110. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  111. package/dist/context/parameters/unified-parameter-api.js +4 -3
  112. package/dist/context/parameters/webgl-parameter-tables.d.ts +10 -0
  113. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  114. package/dist/context/parameters/webgl-parameter-tables.js +29 -16
  115. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  116. package/dist/context/state-tracker/deep-array-equal.js +2 -1
  117. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  118. package/dist/context/state-tracker/track-context-state.js +5 -4
  119. package/dist/context/state-tracker/with-parameters.d.ts +1 -1
  120. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  121. package/dist/context/state-tracker/with-parameters.js +5 -4
  122. package/dist/dist.dev.js +941 -730
  123. package/dist/index.cjs +732 -565
  124. package/dist/index.cjs.map +4 -4
  125. package/dist/index.d.ts +25 -25
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +24 -23
  128. package/dist/types.d.ts.map +1 -1
  129. package/dist/types.js +2 -1
  130. package/dist.min.js +5 -5
  131. package/package.json +4 -4
  132. package/src/adapter/converters/device-parameters.ts +105 -16
  133. package/src/adapter/converters/sampler-parameters.ts +12 -3
  134. package/src/adapter/converters/shader-formats.ts +47 -22
  135. package/src/adapter/converters/texture-formats.ts +87 -66
  136. package/src/adapter/converters/vertex-formats.ts +3 -3
  137. package/src/adapter/device-helpers/webgl-device-features.ts +83 -51
  138. package/src/adapter/device-helpers/webgl-device-info.ts +28 -19
  139. package/src/adapter/device-helpers/webgl-device-limits.ts +46 -150
  140. package/src/adapter/helpers/decode-webgl-types.ts +13 -7
  141. package/src/adapter/helpers/get-shader-layout.ts +4 -3
  142. package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
  143. package/src/adapter/helpers/set-uniform.ts +2 -1
  144. package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
  145. package/src/adapter/objects/constants-to-keys.ts +2 -1
  146. package/src/adapter/objects/webgl-renderbuffer.ts +35 -13
  147. package/src/adapter/objects/webgl-resource.ts +6 -124
  148. package/src/adapter/resources/webgl-buffer.ts +4 -3
  149. package/src/adapter/resources/webgl-command-buffer.ts +5 -5
  150. package/src/adapter/resources/webgl-command-encoder.ts +14 -11
  151. package/src/adapter/resources/webgl-external-texture.ts +3 -2
  152. package/src/adapter/resources/webgl-framebuffer.ts +34 -29
  153. package/src/adapter/resources/webgl-query-set.ts +171 -0
  154. package/src/adapter/resources/webgl-render-pass.ts +17 -8
  155. package/src/adapter/resources/webgl-render-pipeline.ts +41 -48
  156. package/src/adapter/resources/webgl-sampler.ts +2 -1
  157. package/src/adapter/resources/webgl-shader.ts +12 -5
  158. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  159. package/src/adapter/resources/webgl-texture.ts +9 -2
  160. package/src/adapter/resources/webgl-transform-feedback.ts +2 -7
  161. package/src/adapter/resources/webgl-vertex-array.ts +4 -3
  162. package/src/adapter/webgl-canvas-context.ts +6 -4
  163. package/src/adapter/webgl-device.ts +94 -90
  164. package/src/classic/accessor.ts +5 -4
  165. package/src/classic/clear.ts +12 -6
  166. package/src/classic/copy-and-blit.ts +11 -4
  167. package/src/classic/format-utils.ts +2 -1
  168. package/src/classic/typed-array-utils.ts +3 -7
  169. package/src/context/debug/spector.ts +9 -6
  170. package/src/context/debug/webgl-developer-tools.ts +27 -14
  171. package/src/context/{context → helpers}/create-browser-context.ts +3 -2
  172. package/src/context/helpers/webgl-context-data.ts +31 -0
  173. package/src/context/helpers/webgl-extensions.ts +17 -0
  174. package/src/context/parameters/unified-parameter-api.ts +2 -1
  175. package/src/context/parameters/webgl-parameter-tables.ts +69 -32
  176. package/src/context/state-tracker/deep-array-equal.ts +2 -1
  177. package/src/context/state-tracker/track-context-state.ts +11 -6
  178. package/src/context/state-tracker/with-parameters.ts +7 -2
  179. package/src/index.ts +3 -2
  180. package/src/types.ts +2 -1
  181. package/src/context/context/context-data.ts +0 -44
@@ -1,4 +1,5 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  /**
@@ -64,7 +65,7 @@ export function createBrowserContext(
64
65
  // Software GPU
65
66
 
66
67
  // props.failIfMajorPerformanceCaveat = false;
67
-
68
+
68
69
  // if (!gl && props.webgl1) {
69
70
  // gl = canvas.getContext('webgl', props);
70
71
  // }
@@ -0,0 +1,31 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ /**
6
+ * Stores luma.gl specific state associated with a context
7
+ */
8
+ export interface WebGLContextData {
9
+ _polyfilled: boolean;
10
+ _extensions: Record<string, any>;
11
+ }
12
+
13
+ /**
14
+ * Gets luma.gl specific state from a context
15
+ * @returns context state
16
+ */
17
+ export function getWebGLContextData(gl: WebGL2RenderingContext): WebGLContextData {
18
+ // @ts-expect-error
19
+ const luma = gl.luma as WebGLContextData | null;
20
+ if (!luma) {
21
+ const contextState: WebGLContextData = {
22
+ _polyfilled: false,
23
+ _extensions: {}
24
+ };
25
+ // @ts-expect-error
26
+ gl.luma = contextState;
27
+ }
28
+
29
+ // @ts-expect-error
30
+ return gl.luma;
31
+ }
@@ -0,0 +1,17 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {GLExtensions} from '@luma.gl/constants';
6
+
7
+ /** Ensure extensions are only requested once */
8
+ export function getWebGLExtension(
9
+ gl: WebGL2RenderingContext,
10
+ name: string,
11
+ extensions: GLExtensions
12
+ ): unknown {
13
+ if (extensions[name] === undefined) {
14
+ extensions[name] = gl.getExtension(name) || null;
15
+ }
16
+ return extensions[name];
17
+ }
@@ -1,4 +1,5 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  // Provides a unified API for getting and setting any WebGL parameter
@@ -1,4 +1,5 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  // Tables describing WebGL parameters
@@ -64,15 +65,7 @@ export const GL_PARAMETER_DEFAULTS: GLParameters = {
64
65
  [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,
65
66
  // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.
66
67
  [GL.VIEWPORT]: [0, 0, 1024, 1024],
67
- // WEBGL1 PIXEL PACK/UNPACK MODES
68
- [GL.PACK_ALIGNMENT]: 4,
69
- [GL.UNPACK_ALIGNMENT]: 4,
70
- [GL.UNPACK_FLIP_Y_WEBGL]: false,
71
- [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,
72
- [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,
73
68
 
74
- // WEBGL2 / EXTENSIONS
75
- // gl1: 'OES_standard_derivatives'
76
69
  [GL.TRANSFORM_FEEDBACK_BINDING]: null,
77
70
  [GL.COPY_READ_BUFFER_BINDING]: null,
78
71
  [GL.COPY_WRITE_BUFFER_BINDING]: null,
@@ -81,6 +74,12 @@ export const GL_PARAMETER_DEFAULTS: GLParameters = {
81
74
  [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,
82
75
  [GL.READ_FRAMEBUFFER_BINDING]: null,
83
76
  [GL.RASTERIZER_DISCARD]: false,
77
+
78
+ [GL.PACK_ALIGNMENT]: 4,
79
+ [GL.UNPACK_ALIGNMENT]: 4,
80
+ [GL.UNPACK_FLIP_Y_WEBGL]: false,
81
+ [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,
82
+ [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,
84
83
  [GL.PACK_ROW_LENGTH]: 0,
85
84
  [GL.PACK_SKIP_PIXELS]: 0,
86
85
  [GL.PACK_SKIP_ROWS]: 0,
@@ -100,7 +99,7 @@ const pixelStorei = (gl: WebGL2RenderingContext, value: number | boolean, key: G
100
99
  gl.pixelStorei(key, value);
101
100
 
102
101
  const bindFramebuffer = (gl: WebGL2RenderingContext, value: unknown, key: GL) => {
103
- const target = (key === GL.FRAMEBUFFER_BINDING) ? GL.DRAW_FRAMEBUFFER : GL.READ_FRAMEBUFFER;
102
+ const target = key === GL.FRAMEBUFFER_BINDING ? GL.DRAW_FRAMEBUFFER : GL.READ_FRAMEBUFFER;
104
103
  return gl.bindFramebuffer(target, value);
105
104
  };
106
105
 
@@ -137,13 +136,15 @@ export const GL_PARAMETER_SETTERS = {
137
136
  [GL.BLEND_DST_ALPHA]: 'blendFunc',
138
137
  [GL.COLOR_CLEAR_VALUE]: (gl: WebGL2RenderingContext, value: [number, number, number, number]) =>
139
138
  gl.clearColor(...value),
140
- [GL.COLOR_WRITEMASK]: (gl: WebGL2RenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),
139
+ [GL.COLOR_WRITEMASK]: (gl: WebGL2RenderingContext, value: [boolean, boolean, boolean, boolean]) =>
140
+ gl.colorMask(...value),
141
141
  [GL.CULL_FACE]: enable,
142
142
  [GL.CULL_FACE_MODE]: (gl: WebGL2RenderingContext, value) => gl.cullFace(value),
143
143
  [GL.DEPTH_TEST]: enable,
144
144
  [GL.DEPTH_CLEAR_VALUE]: (gl: WebGL2RenderingContext, value) => gl.clearDepth(value),
145
145
  [GL.DEPTH_FUNC]: (gl: WebGL2RenderingContext, value) => gl.depthFunc(value),
146
- [GL.DEPTH_RANGE]: (gl: WebGL2RenderingContext, value: [number, number]) => gl.depthRange(...value),
146
+ [GL.DEPTH_RANGE]: (gl: WebGL2RenderingContext, value: [number, number]) =>
147
+ gl.depthRange(...value),
147
148
  [GL.DEPTH_WRITEMASK]: (gl: WebGL2RenderingContext, value) => gl.depthMask(value),
148
149
  [GL.DITHER]: enable,
149
150
  [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,
@@ -152,9 +153,8 @@ export const GL_PARAMETER_SETTERS = {
152
153
  [GL.RENDERBUFFER_BINDING]: (gl: WebGL2RenderingContext, value) =>
153
154
  gl.bindRenderbuffer(GL.RENDERBUFFER, value),
154
155
  [GL.TRANSFORM_FEEDBACK_BINDING]: (gl: WebGL2RenderingContext, value) =>
155
- (gl ).bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),
156
- [GL.VERTEX_ARRAY_BINDING]: (gl: WebGL2RenderingContext, value) =>
157
- (gl ).bindVertexArray(value),
156
+ gl.bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),
157
+ [GL.VERTEX_ARRAY_BINDING]: (gl: WebGL2RenderingContext, value) => gl.bindVertexArray(value),
158
158
  // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.
159
159
  [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,
160
160
  [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,
@@ -178,7 +178,8 @@ export const GL_PARAMETER_SETTERS = {
178
178
  [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',
179
179
  [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',
180
180
  [GL.SCISSOR_TEST]: enable,
181
- [GL.SCISSOR_BOX]: (gl: WebGL2RenderingContext, value: [number, number, number, number]) => gl.scissor(...value),
181
+ [GL.SCISSOR_BOX]: (gl: WebGL2RenderingContext, value: [number, number, number, number]) =>
182
+ gl.scissor(...value),
182
183
  [GL.STENCIL_TEST]: enable,
183
184
  [GL.STENCIL_CLEAR_VALUE]: (gl: WebGL2RenderingContext, value) => gl.clearStencil(value),
184
185
  [GL.STENCIL_WRITEMASK]: (gl: WebGL2RenderingContext, value) =>
@@ -197,17 +198,41 @@ export const GL_PARAMETER_SETTERS = {
197
198
  [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',
198
199
  [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',
199
200
  [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',
200
- [GL.VIEWPORT]: (gl: WebGL2RenderingContext, value: [number, number, number, number]) => gl.viewport(...value),
201
+ [GL.VIEWPORT]: (gl: WebGL2RenderingContext, value: [number, number, number, number]) =>
202
+ gl.viewport(...value),
203
+
204
+ // WEBGL2 EXTENSIONS
201
205
 
202
- // WEBGL1 PIXEL PACK/UNPACK MODES
206
+ // EXT_depth_clamp https://registry.khronos.org/webgl/extensions/EXT_depth_clamp/
207
+
208
+ [GL.DEPTH_CLAMP_EXT]: enable,
209
+
210
+ // WEBGL_provoking_vertex https://registry.khronos.org/webgl/extensions/WEBGL_provoking_vertex/
211
+
212
+ // [GL.PROVOKING_VERTEX_WEBL]: TODO - extension function needed
213
+
214
+ // WEBGL_polygon_mode https://registry.khronos.org/webgl/extensions/WEBGL_polygon_mode/
215
+
216
+ // POLYGON_MODE_WEBGL TODO - extension function needed
217
+ [GL.POLYGON_OFFSET_LINE_WEBGL]: enable,
218
+
219
+ // WEBGL_clip_cull_distance https://registry.khronos.org/webgl/extensions/WEBGL_clip_cull_distance/
220
+
221
+ [GL.CLIP_DISTANCE0_WEBGL]: enable,
222
+ [GL.CLIP_DISTANCE1_WEBGL]: enable,
223
+ [GL.CLIP_DISTANCE2_WEBGL]: enable,
224
+ [GL.CLIP_DISTANCE3_WEBGL]: enable,
225
+ [GL.CLIP_DISTANCE4_WEBGL]: enable,
226
+ [GL.CLIP_DISTANCE5_WEBGL]: enable,
227
+ [GL.CLIP_DISTANCE6_WEBGL]: enable,
228
+ [GL.CLIP_DISTANCE7_WEBGL]: enable,
229
+
230
+ // PIXEL PACK/UNPACK MODES
203
231
  [GL.PACK_ALIGNMENT]: pixelStorei,
204
232
  [GL.UNPACK_ALIGNMENT]: pixelStorei,
205
233
  [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,
206
234
  [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,
207
235
  [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,
208
-
209
- // WEBGL2 PIXEL PACK/UNPACK MODES
210
- // RASTERIZER_DISCARD ...
211
236
  [GL.PACK_ROW_LENGTH]: pixelStorei,
212
237
  [GL.PACK_SKIP_PIXELS]: pixelStorei,
213
238
  [GL.PACK_SKIP_ROWS]: pixelStorei,
@@ -224,22 +249,30 @@ export const GL_PARAMETER_SETTERS = {
224
249
  const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;
225
250
  return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);
226
251
  },
227
- blend: (gl: WebGL2RenderingContext, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),
228
- blendColor: (gl: WebGL2RenderingContext, value: [number, number, number, number]) => gl.blendColor(...value),
252
+ blend: (gl: WebGL2RenderingContext, value) =>
253
+ value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND),
254
+ blendColor: (gl: WebGL2RenderingContext, value: [number, number, number, number]) =>
255
+ gl.blendColor(...value),
229
256
  blendEquation: (gl: WebGL2RenderingContext, args: number | [number, number]) => {
230
- const separateModes = typeof args === 'number' ? [args, args] as [number, number]: args;
257
+ const separateModes = typeof args === 'number' ? ([args, args] as [number, number]) : args;
231
258
  gl.blendEquationSeparate(...separateModes);
232
259
  },
233
- blendFunc: (gl: WebGL2RenderingContext, args: [number, number] | [number, number, number, number]) => {
234
- const separateFuncs = args?.length === 2 ? [...args, ...args] as [number, number, number, number] : args;
260
+ blendFunc: (
261
+ gl: WebGL2RenderingContext,
262
+ args: [number, number] | [number, number, number, number]
263
+ ) => {
264
+ const separateFuncs =
265
+ args?.length === 2 ? ([...args, ...args] as [number, number, number, number]) : args;
235
266
  gl.blendFuncSeparate(...separateFuncs);
236
267
  },
237
268
 
238
- clearColor: (gl: WebGL2RenderingContext, value: [number, number, number, number]) => gl.clearColor(...value),
269
+ clearColor: (gl: WebGL2RenderingContext, value: [number, number, number, number]) =>
270
+ gl.clearColor(...value),
239
271
  clearDepth: (gl: WebGL2RenderingContext, value) => gl.clearDepth(value),
240
272
  clearStencil: (gl: WebGL2RenderingContext, value) => gl.clearStencil(value),
241
273
 
242
- colorMask: (gl: WebGL2RenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),
274
+ colorMask: (gl: WebGL2RenderingContext, value: [boolean, boolean, boolean, boolean]) =>
275
+ gl.colorMask(...value),
243
276
 
244
277
  cull: (gl: WebGL2RenderingContext, value) =>
245
278
  value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE),
@@ -267,13 +300,16 @@ export const GL_PARAMETER_SETTERS = {
267
300
 
268
301
  polygonOffsetFill: (gl: WebGL2RenderingContext, value) =>
269
302
  value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),
270
- polygonOffset: (gl: WebGL2RenderingContext, value: [number, number]) => gl.polygonOffset(...value),
303
+ polygonOffset: (gl: WebGL2RenderingContext, value: [number, number]) =>
304
+ gl.polygonOffset(...value),
271
305
 
272
- sampleCoverage: (gl: WebGL2RenderingContext, value: [number, boolean?]) => gl.sampleCoverage(...value),
306
+ sampleCoverage: (gl: WebGL2RenderingContext, value: [number, boolean?]) =>
307
+ gl.sampleCoverage(...value),
273
308
 
274
309
  scissorTest: (gl: WebGL2RenderingContext, value) =>
275
310
  value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST),
276
- scissor: (gl: WebGL2RenderingContext, value: [number, number, number, number]) => gl.scissor(...value),
311
+ scissor: (gl: WebGL2RenderingContext, value: [number, number, number, number]) =>
312
+ gl.scissor(...value),
277
313
 
278
314
  stencilTest: (gl: WebGL2RenderingContext, value) =>
279
315
  value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST),
@@ -296,7 +332,8 @@ export const GL_PARAMETER_SETTERS = {
296
332
  gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);
297
333
  },
298
334
 
299
- viewport: (gl: WebGL2RenderingContext, value: [number, number, number, number]) => gl.viewport(...value)
335
+ viewport: (gl: WebGL2RenderingContext, value: [number, number, number, number]) =>
336
+ gl.viewport(...value)
300
337
  };
301
338
 
302
339
  function getValue(glEnum, values, cache) {
@@ -1,4 +1,5 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  /** deeply compare two arrays */
@@ -1,10 +1,15 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  // Support for listening to context state changes and intercepting state queries
5
6
  // NOTE: this system does not handle buffer bindings
6
7
  import {assert} from '@luma.gl/core';
7
- import {GL_PARAMETER_DEFAULTS, GL_HOOKED_SETTERS, NON_CACHE_PARAMETERS} from '../parameters/webgl-parameter-tables';
8
+ import {
9
+ GL_PARAMETER_DEFAULTS,
10
+ GL_HOOKED_SETTERS,
11
+ NON_CACHE_PARAMETERS
12
+ } from '../parameters/webgl-parameter-tables';
8
13
  import {setGLParameters, getGLParameters} from '../parameters/unified-parameter-api';
9
14
  import {deepArrayEqual} from './deep-array-equal';
10
15
 
@@ -57,7 +62,8 @@ class GLState {
57
62
  let valueChanged = false;
58
63
  let oldValue; // = undefined
59
64
 
60
- const oldValues: {[key: number | string]: any} | null = this.stateStack.length > 0 ? this.stateStack[this.stateStack.length - 1] : null;
65
+ const oldValues: {[key: number | string]: any} | null =
66
+ this.stateStack.length > 0 ? this.stateStack[this.stateStack.length - 1] : null;
61
67
 
62
68
  for (const key in values) {
63
69
  assert(key !== undefined);
@@ -152,7 +158,6 @@ export function pushContextState(gl: WebGL2RenderingContext): void {
152
158
  glState.push();
153
159
  }
154
160
 
155
-
156
161
  /**
157
162
  * Restores previously saved WebGL context state
158
163
  */
@@ -190,9 +195,9 @@ function installGetterOverride(gl: WebGL2RenderingContext, functionName: string)
190
195
  // Optionally call the original function to do a "hard" query from the WebGL2RenderingContext
191
196
  return glState.enable
192
197
  ? // Call the getter the params so that it can e.g. serve from a cache
193
- glState.cache[pname]
198
+ glState.cache[pname]
194
199
  : // Optionally call the original function to do a "hard" query from the WebGL2RenderingContext
195
- originalGetterFunc(pname);
200
+ originalGetterFunc(pname);
196
201
  };
197
202
 
198
203
  // Set the name of this anonymous function to help in debugging and profiling
@@ -1,4 +1,5 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  import type {Device} from '@luma.gl/core';
@@ -14,7 +15,11 @@ import {pushContextState, popContextState} from './track-context-state';
14
15
  * - Restores parameters
15
16
  * - Returns the return value of the supplied function
16
17
  */
17
- export function withGLParameters(device: Device | WebGL2RenderingContext, parameters: GLParameters & {nocatch?: boolean}, func: any): any {
18
+ export function withGLParameters(
19
+ device: Device | WebGL2RenderingContext,
20
+ parameters: GLParameters & {nocatch?: boolean},
21
+ func: any
22
+ ): any {
18
23
  const webglDevice = WebGLDevice.attach(device);
19
24
  const gl = webglDevice.gl;
20
25
 
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  // luma.gl Base WebGL wrapper library
@@ -8,7 +9,7 @@
8
9
  // Higher level abstractions can be built on these classes
9
10
 
10
11
  // Types
11
- export type {WebGLLimits} from './adapter/device-helpers/webgl-device-limits';
12
+ export type {WebGLDeviceLimits} from './adapter/device-helpers/webgl-device-limits';
12
13
 
13
14
  // WebGL adapter classes
14
15
  export {WebGLDevice} from './adapter/webgl-device';
package/src/types.ts CHANGED
@@ -1,4 +1,5 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  export type AccessorObject = {
@@ -1,44 +0,0 @@
1
- // luma.gl, MIT license
2
- // Copyright (c) vis.gl contributors
3
-
4
- /**
5
- * Stores luma.gl specific state associated with a context
6
- */
7
- export interface WebGLContextData {
8
- _polyfilled: boolean;
9
- _extensions: Record<string, any>;
10
- }
11
-
12
- /**
13
- * Gets luma.gl specific state from a context
14
- * @returns context state
15
- */
16
- export function getContextData(gl: WebGL2RenderingContext): WebGLContextData {
17
- // @ts-expect-error
18
- const luma = gl.luma as WebGLContextData | null;
19
- if (!luma) {
20
- const contextState: WebGLContextData = {
21
- _polyfilled: false,
22
- _extensions: {}
23
- };
24
- // @ts-expect-error
25
- gl.luma = contextState;
26
- }
27
-
28
- // @ts-expect-error
29
- return gl.luma;
30
- }
31
-
32
- export function initializeExtensions(gl: WebGL2RenderingContext): void {
33
- const contextState = getContextData(gl);
34
- // `getSupportedExtensions` can return null when context is lost.
35
- const EXTENSIONS = gl.getSupportedExtensions() || [];
36
- // Generates warnings in Chrome
37
- const IGNORE_EXTENSIONS = ['WEBGL_polygon_mode'];
38
- for (const extensionName of EXTENSIONS) {
39
- if (!IGNORE_EXTENSIONS.includes(extensionName)) {
40
- const extension = gl.getExtension(extensionName);
41
- contextState._extensions[extensionName] = extension;
42
- }
43
- }
44
- }