@luma.gl/webgl 9.0.0-alpha.10 → 9.0.0-alpha.12

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 (249) hide show
  1. package/dist/adapter/converters/device-parameters.js +1 -12
  2. package/dist/adapter/converters/device-parameters.js.map +1 -1
  3. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  4. package/dist/adapter/converters/texture-formats.js +0 -9
  5. package/dist/adapter/converters/texture-formats.js.map +1 -1
  6. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/vertex-formats.js +3 -0
  8. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  9. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  10. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  11. package/dist/adapter/device-helpers/get-device-info.js +4 -0
  12. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  13. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  14. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  15. package/dist/adapter/helpers/get-shader-layout.js +2 -4
  16. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  17. package/dist/adapter/helpers/set-uniform.js +1 -1
  18. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  19. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  20. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  21. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  22. package/dist/adapter/objects/webgl-renderbuffer.js +1 -1
  23. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  24. package/dist/adapter/objects/webgl-resource.d.ts +2 -4
  25. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  26. package/dist/adapter/objects/webgl-resource.js +1 -7
  27. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  28. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  29. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  30. package/dist/adapter/resources/webgl-buffer.d.ts +0 -1
  31. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  32. package/dist/adapter/resources/webgl-buffer.js +0 -2
  33. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  34. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  35. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  36. package/dist/adapter/resources/webgl-framebuffer.d.ts +0 -1
  37. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  38. package/dist/adapter/resources/webgl-framebuffer.js +2 -2
  39. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  40. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  41. package/dist/adapter/resources/webgl-render-pipeline.js +4 -32
  42. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  43. package/dist/adapter/resources/webgl-sampler.d.ts +1 -0
  44. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgl-sampler.js +4 -0
  46. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  47. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  48. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  49. package/dist/adapter/resources/webgl-texture.d.ts +2 -2
  50. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-texture.js +1 -3
  52. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  53. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  54. package/dist/adapter/webgl-canvas-context.js +4 -3
  55. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  56. package/dist/adapter/webgl-device.d.ts +34 -29
  57. package/dist/adapter/webgl-device.d.ts.map +1 -1
  58. package/dist/adapter/webgl-device.js +37 -28
  59. package/dist/adapter/webgl-device.js.map +1 -1
  60. package/dist/classic/buffer.d.ts.map +1 -1
  61. package/dist/classic/buffer.js.map +1 -1
  62. package/dist/context/debug/webgl-developer-tools.js +1 -7
  63. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  64. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  65. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  66. package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
  67. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  68. package/dist/context/parameters/webgl-parameter-tables.js +15 -14
  69. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  70. package/dist/context/polyfill/context-data.d.ts +13 -0
  71. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  72. package/dist/context/polyfill/context-data.js +14 -0
  73. package/dist/context/polyfill/context-data.js.map +1 -0
  74. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  75. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  76. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  77. package/dist/context/polyfill/polyfill-context.js +4 -4
  78. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  79. package/dist/context/polyfill/polyfill-table.d.ts +7 -7
  80. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  81. package/dist/context/polyfill/polyfill-table.js +5 -4
  82. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  83. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  84. package/dist/context/state-tracker/track-context-state.js +0 -1
  85. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  86. package/dist/context/state-tracker/with-parameters.js +1 -1
  87. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  88. package/dist/es5/adapter/converters/device-parameters.js +1 -12
  89. package/dist/es5/adapter/converters/device-parameters.js.map +1 -1
  90. package/dist/es5/adapter/converters/texture-formats.js +1 -10
  91. package/dist/es5/adapter/converters/texture-formats.js.map +1 -1
  92. package/dist/es5/adapter/converters/vertex-formats.js +3 -0
  93. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -1
  94. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  95. package/dist/es5/adapter/device-helpers/get-device-info.js +4 -0
  96. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  97. package/dist/es5/adapter/helpers/get-shader-layout.js +2 -4
  98. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -1
  99. package/dist/es5/adapter/helpers/set-uniform.js +1 -1
  100. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -1
  101. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -1
  102. package/dist/es5/adapter/objects/webgl-renderbuffer.js +1 -1
  103. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -1
  104. package/dist/es5/adapter/objects/webgl-resource.js +1 -6
  105. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -1
  106. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  107. package/dist/es5/adapter/resources/webgl-buffer.js +0 -1
  108. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -1
  109. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -1
  110. package/dist/es5/adapter/resources/webgl-framebuffer.js +2 -1
  111. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -1
  112. package/dist/es5/adapter/resources/webgl-render-pipeline.js +2 -38
  113. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -1
  114. package/dist/es5/adapter/resources/webgl-sampler.js +5 -0
  115. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -1
  116. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -1
  117. package/dist/es5/adapter/resources/webgl-texture.js +1 -7
  118. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -1
  119. package/dist/es5/adapter/webgl-canvas-context.js +3 -4
  120. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -1
  121. package/dist/es5/adapter/webgl-device.js +38 -27
  122. package/dist/es5/adapter/webgl-device.js.map +1 -1
  123. package/dist/es5/classic/buffer.js.map +1 -1
  124. package/dist/es5/context/debug/webgl-developer-tools.js +1 -7
  125. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -1
  126. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  127. package/dist/es5/context/parameters/webgl-parameter-tables.js +10 -9
  128. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  129. package/dist/es5/context/polyfill/context-data.js +21 -0
  130. package/dist/es5/context/polyfill/context-data.js.map +1 -0
  131. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  132. package/dist/es5/context/polyfill/polyfill-context.js +4 -4
  133. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  134. package/dist/es5/context/polyfill/polyfill-table.js +5 -4
  135. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
  136. package/dist/es5/context/state-tracker/track-context-state.js +0 -1
  137. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  138. package/dist/es5/context/state-tracker/with-parameters.js +4 -2
  139. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
  140. package/dist/es5/index.js +0 -14
  141. package/dist/es5/index.js.map +1 -1
  142. package/dist/esm/adapter/converters/device-parameters.js +1 -12
  143. package/dist/esm/adapter/converters/device-parameters.js.map +1 -1
  144. package/dist/esm/adapter/converters/texture-formats.js +0 -9
  145. package/dist/esm/adapter/converters/texture-formats.js.map +1 -1
  146. package/dist/esm/adapter/converters/vertex-formats.js +3 -0
  147. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -1
  148. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  149. package/dist/esm/adapter/device-helpers/get-device-info.js +4 -0
  150. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  151. package/dist/esm/adapter/helpers/get-shader-layout.js +2 -4
  152. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -1
  153. package/dist/esm/adapter/helpers/set-uniform.js +1 -1
  154. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -1
  155. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -1
  156. package/dist/esm/adapter/objects/webgl-renderbuffer.js +1 -1
  157. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -1
  158. package/dist/esm/adapter/objects/webgl-resource.js +1 -7
  159. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -1
  160. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  161. package/dist/esm/adapter/resources/webgl-buffer.js +0 -2
  162. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -1
  163. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -1
  164. package/dist/esm/adapter/resources/webgl-framebuffer.js +2 -2
  165. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -1
  166. package/dist/esm/adapter/resources/webgl-render-pipeline.js +4 -32
  167. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -1
  168. package/dist/esm/adapter/resources/webgl-sampler.js +4 -0
  169. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -1
  170. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -1
  171. package/dist/esm/adapter/resources/webgl-texture.js +1 -3
  172. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -1
  173. package/dist/esm/adapter/webgl-canvas-context.js +4 -3
  174. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -1
  175. package/dist/esm/adapter/webgl-device.js +37 -28
  176. package/dist/esm/adapter/webgl-device.js.map +1 -1
  177. package/dist/esm/classic/buffer.js.map +1 -1
  178. package/dist/esm/context/debug/webgl-developer-tools.js +1 -7
  179. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -1
  180. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  181. package/dist/esm/context/parameters/webgl-parameter-tables.js +15 -14
  182. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  183. package/dist/esm/context/polyfill/context-data.js +14 -0
  184. package/dist/esm/context/polyfill/context-data.js.map +1 -0
  185. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  186. package/dist/esm/context/polyfill/polyfill-context.js +4 -4
  187. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  188. package/dist/esm/context/polyfill/polyfill-table.js +5 -4
  189. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
  190. package/dist/esm/context/state-tracker/track-context-state.js +0 -1
  191. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  192. package/dist/esm/context/state-tracker/with-parameters.js +1 -1
  193. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
  194. package/dist/esm/index.js +0 -1
  195. package/dist/esm/index.js.map +1 -1
  196. package/dist/index.d.ts +0 -1
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +0 -1
  199. package/dist/index.js.map +1 -1
  200. package/package.json +4 -4
  201. package/src/adapter/converters/device-parameters.ts +11 -11
  202. package/src/adapter/converters/texture-formats.ts +12 -12
  203. package/src/adapter/converters/vertex-formats.ts +1 -0
  204. package/src/adapter/device-helpers/device-features.ts +0 -1
  205. package/src/adapter/device-helpers/get-device-info.ts +5 -1
  206. package/src/adapter/helpers/get-shader-layout.ts +18 -15
  207. package/src/adapter/helpers/set-uniform.ts +1 -1
  208. package/src/adapter/objects/constants-to-keys.ts +4 -1
  209. package/src/adapter/objects/webgl-renderbuffer.ts +5 -5
  210. package/src/adapter/objects/webgl-resource.ts +7 -12
  211. package/src/adapter/objects/webgl-vertex-array-object.ts +4 -4
  212. package/src/adapter/resources/webgl-buffer.ts +4 -4
  213. package/src/adapter/resources/webgl-command-encoder.ts +4 -4
  214. package/src/adapter/resources/webgl-framebuffer.ts +6 -5
  215. package/src/adapter/resources/webgl-render-pipeline.ts +24 -23
  216. package/src/adapter/resources/webgl-sampler.ts +5 -1
  217. package/src/adapter/resources/webgl-shader.ts +1 -1
  218. package/src/adapter/resources/webgl-texture.ts +5 -7
  219. package/src/adapter/webgl-canvas-context.ts +2 -3
  220. package/src/adapter/webgl-device.ts +69 -59
  221. package/src/classic/buffer.ts +7 -4
  222. package/src/context/debug/webgl-developer-tools.ts +7 -7
  223. package/src/context/parameters/unified-parameter-api.ts +1 -1
  224. package/src/context/parameters/webgl-parameter-tables.ts +113 -94
  225. package/src/context/polyfill/context-data.ts +27 -0
  226. package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
  227. package/src/context/polyfill/polyfill-context.ts +5 -5
  228. package/src/context/polyfill/polyfill-table.ts +14 -13
  229. package/src/context/state-tracker/track-context-state.ts +0 -1
  230. package/src/context/state-tracker/with-parameters.ts +2 -1
  231. package/src/index.ts +0 -3
  232. package/dist/context/context/context-state.d.ts +0 -18
  233. package/dist/context/context/context-state.d.ts.map +0 -1
  234. package/dist/context/context/context-state.js +0 -26
  235. package/dist/context/context/context-state.js.map +0 -1
  236. package/dist/context/context/device-pixels.d.ts +0 -25
  237. package/dist/context/context/device-pixels.d.ts.map +0 -1
  238. package/dist/context/context/device-pixels.js +0 -103
  239. package/dist/context/context/device-pixels.js.map +0 -1
  240. package/dist/es5/context/context/context-state.js +0 -31
  241. package/dist/es5/context/context/context-state.js.map +0 -1
  242. package/dist/es5/context/context/device-pixels.js +0 -121
  243. package/dist/es5/context/context/device-pixels.js.map +0 -1
  244. package/dist/esm/context/context/context-state.js +0 -26
  245. package/dist/esm/context/context/context-state.js.map +0 -1
  246. package/dist/esm/context/context/device-pixels.js +0 -103
  247. package/dist/esm/context/context/device-pixels.js.map +0 -1
  248. package/src/context/context/context-state.ts +0 -41
  249. package/src/context/context/device-pixels.ts +0 -158
@@ -2,13 +2,13 @@
2
2
 
3
3
  import {
4
4
  ShaderLayout,
5
- BindingLayout,
5
+ // BindingLayout,
6
6
  UniformBinding,
7
7
  UniformBlockBinding,
8
8
  ProgramBindings,
9
9
  AttributeBinding,
10
10
  VaryingBinding,
11
- AttributeLayout,
11
+ // AttributeLayout,
12
12
  AccessorObject
13
13
  } from '@luma.gl/api';
14
14
  import GL from '@luma.gl/constants';
@@ -17,6 +17,7 @@ import Accessor from '../../classic/accessor'; // TODO - should NOT depend on cl
17
17
  import {decodeUniformType, decodeAttributeType} from './uniforms';
18
18
  import {getVertexFormat} from '../converters/vertex-formats';
19
19
  import {isSamplerUniform} from './uniforms';
20
+
20
21
  /**
21
22
  * Extract metadata describing binding information for a program's shaders
22
23
  * Note: `linkProgram()` needs to have been called
@@ -31,9 +32,11 @@ export function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram
31
32
  };
32
33
 
33
34
  for (const attribute of programBindings.attributes) {
35
+ // TODO - multicolumn attributes like a matrix4 can be up to 16 elts...
36
+ const size = Math.min(attribute.accessor.size, 4);
34
37
  const format =
35
38
  // attribute.accessor.format ||
36
- getVertexFormat(attribute.accessor.type || GL.FLOAT, attribute.accessor.size);
39
+ getVertexFormat(attribute.accessor.type || GL.FLOAT, size);
37
40
  shaderLayout.attributes.push({
38
41
  name: attribute.name,
39
42
  location: attribute.location,
@@ -262,19 +265,19 @@ function readUniformBlocks(
262
265
 
263
266
  const uniformType = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_TYPE); // Array of GLenum indicating the types of the uniforms.
264
267
  const uniformArrayLength = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_SIZE); // Array of GLuint indicating the sizes of the uniforms.
265
- const uniformBlockIndex = gl2.getActiveUniforms(
266
- program,
267
- uniformIndices,
268
- GL.UNIFORM_BLOCK_INDEX
269
- ); // Array of GLint indicating the block indices of the uniforms.
268
+ // const uniformBlockIndex = gl2.getActiveUniforms(
269
+ // program,
270
+ // uniformIndices,
271
+ // GL.UNIFORM_BLOCK_INDEX
272
+ // ); // Array of GLint indicating the block indices of the uniforms.
270
273
  const uniformOffset = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_OFFSET); // Array of GLint indicating the uniform buffer offsets.
271
274
  const uniformStride = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_ARRAY_STRIDE); // Array of GLint indicating the strides between the elements.
272
- const uniformMatrixStride = gl2.getActiveUniforms(
273
- program,
274
- uniformIndices,
275
- GL.UNIFORM_MATRIX_STRIDE
276
- ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
277
- const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
275
+ // const uniformMatrixStride = gl2.getActiveUniforms(
276
+ // program,
277
+ // uniformIndices,
278
+ // GL.UNIFORM_MATRIX_STRIDE
279
+ // ); // Array of GLint indicating the strides between columns of a column-major matrix or a row-major matrix.
280
+ // const uniformRowMajor = gl2.getActiveUniforms(program, uniformIndices, GL.UNIFORM_IS_ROW_MAJOR);
278
281
  for (let i = 0; i < blockInfo.uniformCount; ++i) {
279
282
  const activeInfo = gl2.getActiveUniform(program, uniformIndices[i]);
280
283
  if (!activeInfo) {
@@ -370,7 +373,7 @@ function parseUniformName(name: string): {name: string; length: number; isArray:
370
373
  * Extract info about all "active" uniform blocks
371
374
  * ("Active" just means that unused (inactive) blocks may have been optimized away during linking)
372
375
  *
373
- function getUniformBlockBindings(gl, program): Binding[] {
376
+ function getUniformBlockBindings(gl: WebGLRenderingContext, program): Binding[] {
374
377
  if (!isWebGL2(gl)) {
375
378
  return;
376
379
  }
@@ -60,7 +60,7 @@ export function setUniform(
60
60
  case GL.BOOL: return gl.uniform1iv(location, arrayValue);
61
61
  case GL.BOOL_VEC2: return gl.uniform2iv(location, arrayValue);
62
62
  case GL.BOOL_VEC3: return gl.uniform3iv(location, arrayValue);
63
- case GL.BOOL_VEC4: gl.uniform4iv(location, arrayValue);
63
+ case GL.BOOL_VEC4: return gl.uniform4iv(location, arrayValue);
64
64
 
65
65
  // WEBGL2 - unsigned integers
66
66
  case GL.UNSIGNED_INT: return gl2.uniform1uiv(location, arrayValue, 1);
@@ -16,16 +16,18 @@ export function getKeyValue(gl: WebGLRenderingContext, name: string | GL): GL {
16
16
 
17
17
  // Look up string, after removing any 'GL.' or 'gl.' prefix
18
18
  name = name.replace(/^.*\./, '');
19
+ // @ts-ignore expect-error depends on settings
19
20
  const value = gl[name];
20
21
  assert(value !== undefined, `Accessing undefined constant GL.${name}`);
21
22
  return value;
22
23
  }
23
24
 
24
25
  export function getKey(gl: WebGLRenderingContext, value: any): string {
25
- // @ts-expect-error
26
+ // @ts-ignore expect-error depends on settings
26
27
  gl = gl.gl || gl;
27
28
  value = Number(value);
28
29
  for (const key in gl) {
30
+ // @ts-ignore expect-error depends on settings
29
31
  if (gl[key] === value) {
30
32
  return `GL.${key}`;
31
33
  }
@@ -37,6 +39,7 @@ export function getKeyType(gl: WebGLRenderingContext, value: any): string {
37
39
  assert(value !== undefined, 'undefined key');
38
40
  value = Number(value);
39
41
  for (const key in gl) {
42
+ // @ts-ignore expect-error depends on settings
40
43
  if (gl[key] === value) {
41
44
  return `GL.${key}`;
42
45
  }
@@ -35,7 +35,7 @@ const DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {
35
35
  * Renderbuffer objects also natively accommodate Multisampling (MSAA).
36
36
  */
37
37
  export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps> {
38
- get [Symbol.toStringTag](): string { return 'Renderbuffer'; }
38
+ override get [Symbol.toStringTag](): string { return 'Renderbuffer'; }
39
39
 
40
40
  get width(): number { return this.props.width; }
41
41
  get height(): number { return this.props.height; }
@@ -43,7 +43,7 @@ export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps>
43
43
  get samples(): number { return this.props.samples; }
44
44
 
45
45
  static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {
46
- return !options.format || isRenderbufferFormatSupported(gl, options.format);
46
+ return !options?.format || isRenderbufferFormatSupported(gl, options.format);
47
47
  }
48
48
 
49
49
  constructor(device: WebGLDevice, props: RenderbufferProps) {
@@ -89,16 +89,16 @@ export default class WEBGLRenderbuffer extends WebGLResource<RenderbufferProps>
89
89
 
90
90
  // RESOURCE IMPLEMENTATION
91
91
 
92
- _createHandle() {
92
+ override _createHandle() {
93
93
  return this.gl.createRenderbuffer();
94
94
  }
95
95
 
96
- _deleteHandle(): void {
96
+ override _deleteHandle(): void {
97
97
  this.gl.deleteRenderbuffer(this.handle);
98
98
  this.trackDeallocatedMemory();
99
99
  }
100
100
 
101
- _bindHandle(handle: WEBGLRenderbuffer): void {
101
+ override _bindHandle(handle: WEBGLRenderbuffer): void {
102
102
  this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);
103
103
  }
104
104
  }
@@ -13,9 +13,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
13
13
  /**
14
14
  * Base class for WebGL object wrappers
15
15
  */
16
- export default abstract class WebGLResource<Props> extends Resource<Props> {
17
- id: string;
18
- userData: any;
16
+ export default abstract class WebGLResource<Props extends ResourceProps> extends Resource<Props> {
19
17
  readonly device: WebGLDevice;
20
18
  readonly gl: WebGLRenderingContext;
21
19
  readonly gl2: WebGL2RenderingContext;
@@ -34,12 +32,10 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
34
32
  assertWebGLContext(gl);
35
33
 
36
34
  // extends
37
- // @ts-expect-error
38
- const {id, userData = {}} = props || {};
35
+ const {id} = props || {};
39
36
  this.gl = gl;
40
37
  this.gl2 = gl as WebGL2RenderingContext;
41
38
  this.id = id || uid(this.constructor.name);
42
- this.userData = userData;
43
39
 
44
40
  // Set the handle
45
41
  // If handle was provided, use it, otherwise create a new handle
@@ -48,7 +44,6 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
48
44
  // this.glCount = glGetContextLossCount(this.gl);
49
45
 
50
46
  // Default VertexArray needs to be created with null handle, so compare against undefined
51
- // @ts-expect-error
52
47
  this._handle = props?.handle;
53
48
  if (this._handle === undefined) {
54
49
  this._handle = this._createHandle();
@@ -57,7 +52,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
57
52
  this.byteLength = 0;
58
53
  }
59
54
 
60
- toString(): string {
55
+ override toString(): string {
61
56
  return `${this.constructor.name}(${this.id})`;
62
57
  }
63
58
 
@@ -74,11 +69,11 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
74
69
  return this._handle;
75
70
  }
76
71
 
77
- destroy(): void {
72
+ override destroy(): void {
78
73
  this.delete();
79
74
  }
80
75
 
81
- delete({deleteChildren = false} = {}) {
76
+ override delete({deleteChildren = false} = {}) {
82
77
  // Delete this object, and get refs to any children
83
78
  // @ts-expect-error
84
79
  const children = this._handle && this._deleteHandle(this._handle);
@@ -130,7 +125,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
130
125
  * @param name
131
126
  * @return param
132
127
  */
133
- getParameter(pname: number, props = {}): any {
128
+ getParameter(pname: number, props: any = {}): any {
134
129
  pname = getKeyValue(this.gl, pname);
135
130
  assert(pname);
136
131
 
@@ -163,7 +158,7 @@ const ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual met
163
158
  // Many resources support a getParameter call -
164
159
  // getParameters will get all parameters - slow but useful for debugging
165
160
  // eslint-disable-next-line complexity
166
- getParameters(options: {parameters?, keys?} = {}) {
161
+ getParameters(options: {parameters?: any, keys?: any} = {}) {
167
162
  const {parameters, keys} = options;
168
163
 
169
164
  // Get parameter definitions for this Resource
@@ -17,7 +17,7 @@ export type VertexArrayObjectProps = ResourceProps & {
17
17
 
18
18
  /** VertexArrayObject wrapper */
19
19
  export default class WEBGLVertexArrayObject extends WebGLResource<VertexArrayObjectProps> {
20
- get [Symbol.toStringTag](): string {
20
+ override get [Symbol.toStringTag](): string {
21
21
  return 'BaseVertexArrayObject';
22
22
  }
23
23
 
@@ -26,18 +26,18 @@ export default class WEBGLVertexArrayObject extends WebGLResource<VertexArrayObj
26
26
  super(device, props, {});
27
27
  }
28
28
 
29
- _createHandle() {
29
+ override _createHandle() {
30
30
  return this.gl2.createVertexArray();
31
31
  }
32
32
 
33
- _deleteHandle(): void {
33
+ override _deleteHandle(): void {
34
34
  this.gl2.deleteVertexArray(this.handle);
35
35
  // @ts-expect-error
36
36
  return [this.elements];
37
37
  // return [this.elements, ...this.buffers];
38
38
  }
39
39
 
40
- _bindHandle(handle: WEBGLVertexArrayObject): void {
40
+ override _bindHandle(handle: WEBGLVertexArrayObject): void {
41
41
  this.gl2.bindVertexArray(handle);
42
42
  }
43
43
 
@@ -19,7 +19,7 @@ export default class WEBGLBuffer extends Buffer {
19
19
 
20
20
  webglUsage: number;
21
21
 
22
- accessor: {};
22
+ // accessor: {};
23
23
 
24
24
  constructor(device: WebGLDevice, props: BufferProps = {}) {
25
25
  super(device, props);
@@ -101,7 +101,7 @@ export default class WEBGLBuffer extends Buffer {
101
101
  return this;
102
102
  }
103
103
 
104
- destroy(): void {
104
+ override destroy(): void {
105
105
  if (this.handle) {
106
106
  this.removeStats();
107
107
  this.trackDeallocatedMemory();
@@ -111,7 +111,7 @@ export default class WEBGLBuffer extends Buffer {
111
111
  }
112
112
  }
113
113
 
114
- write(data: ArrayBufferView, byteOffset: number = 0): void {
114
+ override write(data: ArrayBufferView, byteOffset: number = 0): void {
115
115
  const srcOffset = 0;
116
116
  const byteLength = data.byteLength;
117
117
 
@@ -135,7 +135,7 @@ export default class WEBGLBuffer extends Buffer {
135
135
  }
136
136
 
137
137
  /** Read data from the buffer */
138
- async readAsync(
138
+ override async readAsync(
139
139
  byteOffset: number = 0,
140
140
  byteLength?: number
141
141
  ): Promise<ArrayBuffer> {
@@ -19,7 +19,7 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
19
19
  this.device = device;
20
20
  }
21
21
 
22
- destroy() {}
22
+ override destroy(): void {}
23
23
 
24
24
  // beginRenderPass(GPURenderPassDescriptor descriptor): GPURenderPassEncoder;
25
25
  // beginComputePass(optional GPUComputePassDescriptor descriptor = {}): GPUComputePassEncoder;
@@ -41,10 +41,10 @@ export default class WEBGLCommandEncoder extends CommandEncoder {
41
41
  this.commandBuffer.commands.push({name: 'copy-texture-to-texture', options});
42
42
  }
43
43
 
44
- pushDebugGroup(groupLabel: string): void {}
45
- popDebugGroup() {}
44
+ override pushDebugGroup(groupLabel: string): void {}
45
+ override popDebugGroup() {}
46
46
 
47
- insertDebugMarker(markerLabel: string): void {}
47
+ override insertDebugMarker(markerLabel: string): void {}
48
48
 
49
49
  // writeTimestamp(querySet: Query, queryIndex: number): void {}
50
50
 
@@ -1,6 +1,6 @@
1
1
  // luma.gl, MIT license
2
2
 
3
- import type {FramebufferProps, DepthStencilTextureFormat, ColorTextureFormat} from '@luma.gl/api';
3
+ import type {FramebufferProps, ColorTextureFormat} from '@luma.gl/api';
4
4
  import {Framebuffer, Texture, log, assert} from '@luma.gl/api';
5
5
  import GL from '@luma.gl/constants';
6
6
  import WebGLDevice from '../webgl-device';
@@ -19,7 +19,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
19
19
 
20
20
  get texture() { return this.colorAttachments[0]; }
21
21
  readonly colorAttachments: WebGLTexture[] = [];
22
- readonly depthStencilAttachment: WebGLTexture | null = null; d
22
+ readonly depthStencilAttachment: WebGLTexture | null = null;
23
23
  protected _ownResources: (WebGLTexture | Renderbuffer)[] = [];
24
24
 
25
25
  constructor(device: WebGLDevice, props: FramebufferProps) {
@@ -62,7 +62,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
62
62
  }
63
63
  }
64
64
 
65
- destroy() {
65
+ override destroy(): void {
66
66
  if (this.handle !== null) {
67
67
  for (const resource of this._ownResources) {
68
68
  resource.destroy();
@@ -202,6 +202,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
202
202
  this._attachTexture(attachmentPoint, attachment, 0, 0);
203
203
  return attachment;
204
204
  }
205
+ throw new Error('attach');
205
206
  }
206
207
 
207
208
  protected _attachRenderbuffer(attachment: GL, renderbuffer: Renderbuffer): void {
@@ -251,7 +252,7 @@ export default class WEBGLFramebuffer extends Framebuffer {
251
252
  // Helper functions
252
253
 
253
254
  // Map an index to a cube map face constant
254
- function mapIndexToCubeMapFace(layer) {
255
+ function mapIndexToCubeMapFace(layer: number | GL): GL {
255
256
  // TEXTURE_CUBE_MAP_POSITIVE_X is a big value (0x8515)
256
257
  // if smaller assume layer is index, otherwise assume it is already a cube map face constant
257
258
  return layer < GL.TEXTURE_CUBE_MAP_POSITIVE_X ? layer + GL.TEXTURE_CUBE_MAP_POSITIVE_X : layer;
@@ -259,7 +260,7 @@ function mapIndexToCubeMapFace(layer) {
259
260
 
260
261
  // Helper METHODS
261
262
  // Get a string describing the framebuffer error if installed
262
- function _getFrameBufferStatus(status) {
263
+ function _getFrameBufferStatus(status: GL) {
263
264
  switch (status) {
264
265
  case GL.FRAMEBUFFER_COMPLETE:
265
266
  return 'success';
@@ -5,13 +5,12 @@ import type {
5
5
  Binding,
6
6
  ShaderLayout,
7
7
  PrimitiveTopology,
8
- BindingLayout,
8
+ // BindingLayout,
9
9
  AttributeLayout
10
10
  } from '@luma.gl/api';
11
11
  import {RenderPipeline, cast, log, decodeVertexFormat} from '@luma.gl/api';
12
12
  import GL from '@luma.gl/constants';
13
13
 
14
- import type {GLParameters} from '../../types/webgl';
15
14
  import {getWebGLDataType} from '../converters/texture-formats';
16
15
  import {getShaderLayout} from '../helpers/get-shader-layout';
17
16
  import {withDeviceParameters, withGLParameters} from '../converters/device-parameters';
@@ -74,7 +73,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
74
73
  this.vertexArrayObject = new WEBGLVertexArrayObject(this.device);
75
74
  }
76
75
 
77
- destroy(): void {
76
+ override destroy(): void {
78
77
  if (this.handle) {
79
78
  this.device.gl.deleteProgram(this.handle);
80
79
  // this.handle = null;
@@ -108,7 +107,7 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
108
107
  offset: 0,
109
108
  normalized,
110
109
  integer,
111
- divisor: attribute.stepMode === 'instance' ? 1 : 0
110
+ divisor
112
111
  });
113
112
  }
114
113
  }
@@ -173,12 +172,12 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
173
172
  const {
174
173
  renderPass = this.device.getDefaultRenderPass(),
175
174
  vertexCount,
176
- indexCount,
175
+ // indexCount,
177
176
  instanceCount,
178
177
  firstVertex = 0,
179
- firstIndex,
180
- firstInstance,
181
- baseVertex
178
+ // firstIndex,
179
+ // firstInstance,
180
+ // baseVertex
182
181
  } = options;
183
182
 
184
183
  const drawMode = getDrawMode(this.props.topology);
@@ -278,12 +277,12 @@ export default class WEBGLRenderPipeline extends RenderPipeline {
278
277
  _areTexturesRenderable() {
279
278
  let texturesRenderable = true;
280
279
 
281
- for (const [name, texture] of Object.entries(this._textureUniforms)) {
280
+ for (const [, texture] of Object.entries(this._textureUniforms)) {
282
281
  texture.update();
283
282
  texturesRenderable = texturesRenderable && texture.loaded;
284
283
  }
285
284
 
286
- for (const [name, texture] of Object.entries(this.bindings)) {
285
+ for (const [, texture] of Object.entries(this.bindings)) {
287
286
  // texture.update();
288
287
  if (texture.loaded !== undefined) {
289
288
  texturesRenderable = texturesRenderable && texture.loaded;
@@ -398,24 +397,25 @@ function getGLPrimitive(topology: PrimitiveTopology): GL.POINTS | GL.LINES | GL.
398
397
  }
399
398
  }
400
399
 
401
- function getAttributesByLocation(
402
- attributes: Record<string, Buffer>,
403
- layout: ShaderLayout
404
- ): Record<number, Buffer> {
405
- const byLocation: Record<number, Buffer> = {};
406
- for (const [name, buffer] of Object.entries(attributes)) {
407
- const attribute = getAttributeLayout(layout, name);
408
- if (attribute) {
409
- byLocation[attribute.location] = buffer;
410
- }
411
- }
412
- return byLocation;
413
- }
400
+ // function getAttributesByLocation(
401
+ // attributes: Record<string, Buffer>,
402
+ // layout: ShaderLayout
403
+ // ): Record<number, Buffer> {
404
+ // const byLocation: Record<number, Buffer> = {};
405
+ // for (const [name, buffer] of Object.entries(attributes)) {
406
+ // const attribute = getAttributeLayout(layout, name);
407
+ // if (attribute) {
408
+ // byLocation[attribute.location] = buffer;
409
+ // }
410
+ // }
411
+ // return byLocation;
412
+ // }
414
413
 
415
414
  function getAttributeLayout(layout: ShaderLayout, name: string): AttributeLayout | null {
416
415
  return layout.attributes.find((binding) => binding.name === name) || null;
417
416
  }
418
417
 
418
+ /* TODO
419
419
  function getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {
420
420
  const binding = layout.bindings.find((binding) => binding.name === name);
421
421
  if (!binding) {
@@ -423,3 +423,4 @@ function getBindingLayout(layout: ShaderLayout, name: string): BindingLayout {
423
423
  }
424
424
  return binding;
425
425
  }
426
+ */
@@ -28,7 +28,7 @@ export default class WEBGLSampler extends Sampler {
28
28
  }
29
29
  }
30
30
 
31
- destroy(): void {
31
+ override destroy(): void {
32
32
  if (this.handle) {
33
33
  this.device.gl2.deleteSampler(this.handle);
34
34
  // @ts-expect-error
@@ -36,6 +36,10 @@ export default class WEBGLSampler extends Sampler {
36
36
  }
37
37
  }
38
38
 
39
+ override toString(): string {
40
+ return `Sampler(${this.id},${JSON.stringify(this.props)})`;
41
+ }
42
+
39
43
  /** Set sampler parameters on the sampler */
40
44
  private _setSamplerParameters(parameters: GLSamplerParameters): void {
41
45
  for (const [pname, value] of Object.entries(parameters)) {
@@ -28,7 +28,7 @@ import WebGLDevice from '../webgl-device';
28
28
  this._compile(this.source);
29
29
  }
30
30
 
31
- destroy(): void {
31
+ override destroy(): void {
32
32
  if (this.handle) {
33
33
  this.removeStats();
34
34
  this.device.gl.deleteShader(this.handle);
@@ -194,7 +194,7 @@ export default class WEBGLTexture extends Texture {
194
194
  Object.seal(this);
195
195
  }
196
196
 
197
- destroy(): void {
197
+ override destroy(): void {
198
198
  if (this.handle) {
199
199
  this.gl.deleteTexture(this.handle);
200
200
  this.removeStats();
@@ -204,7 +204,7 @@ export default class WEBGLTexture extends Texture {
204
204
  }
205
205
  }
206
206
 
207
- toString(): string {
207
+ override toString(): string {
208
208
  return `Texture(${this.id},${this.width}x${this.height})`;
209
209
  }
210
210
 
@@ -383,7 +383,7 @@ export default class WEBGLTexture extends Texture {
383
383
  }
384
384
 
385
385
  /** Update external texture (video frame) */
386
- update(): this {
386
+ update(): void {
387
387
  if (this._video) {
388
388
  const {video, parameters, lastTime} = this._video;
389
389
  // @ts-expect-error
@@ -940,7 +940,7 @@ export default class WEBGLTexture extends Texture {
940
940
  * Sets sampler parameters on texture
941
941
  * @note: Applies NPOT workaround if appropriate
942
942
  */
943
- _setSamplerParameters(parameters: GLSamplerParameters) {
943
+ _setSamplerParameters(parameters: GLSamplerParameters): void {
944
944
  // Work around WebGL1 sampling restrictions on NPOT textures
945
945
  if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
946
946
  parameters = updateSamplerParametersForNPOT(parameters);
@@ -972,7 +972,7 @@ export default class WEBGLTexture extends Texture {
972
972
  }
973
973
  }
974
974
  this.gl.bindTexture(this.target, null);
975
- return this;
975
+ return;
976
976
  }
977
977
 
978
978
  /** @deprecated For LegacyTexture subclass */
@@ -1031,6 +1031,4 @@ function isNPOT(width: number, height: number): boolean {
1031
1031
 
1032
1032
  function logParameters(parameters: Record<number, GL | number>) {
1033
1033
  log.log(1, 'texture sampler parameters', parameters)();
1034
- for (const [pname, pvalue] of Object.entries(parameters)) {
1035
- }
1036
1034
  }
@@ -1,7 +1,6 @@
1
1
  // luma.gl, MIT license
2
2
  import type {CanvasContextProps} from '@luma.gl/api';
3
3
  import {CanvasContext} from '@luma.gl/api';
4
- import {getDevicePixelRatio, setDevicePixelRatio} from '../context/context/device-pixels';
5
4
  import WebGLDevice from './webgl-device';
6
5
  import WEBGLFramebuffer from './resources/webgl-framebuffer';
7
6
 
@@ -19,6 +18,7 @@ export default class WebGLCanvasContext extends CanvasContext {
19
18
  super(props);
20
19
  this.device = device;
21
20
  this.presentationSize = [-1, -1];
21
+ this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
22
22
  this.update();
23
23
  }
24
24
 
@@ -52,8 +52,7 @@ export default class WebGLCanvasContext extends CanvasContext {
52
52
  resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {
53
53
  // Resize browser context .
54
54
  if (this.canvas) {
55
- const devicePixelRatio = getDevicePixelRatio(options?.useDevicePixels);
56
- setDevicePixelRatio(this.device.gl, devicePixelRatio, options);
55
+ this.setDevicePixelRatio(devicePixelRatio, options);
57
56
  return;
58
57
  }
59
58