@luma.gl/webgl 9.0.0-alpha.11 → 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 (229) 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 +3 -0
  55. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  56. package/dist/adapter/webgl-device.d.ts +2 -3
  57. package/dist/adapter/webgl-device.d.ts.map +1 -1
  58. package/dist/adapter/webgl-device.js +5 -4
  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/{context/context-state.d.ts → polyfill/context-data.d.ts} +3 -3
  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 +2 -0
  120. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -1
  121. package/dist/es5/adapter/webgl-device.js +4 -3
  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/esm/adapter/converters/device-parameters.js +1 -12
  141. package/dist/esm/adapter/converters/device-parameters.js.map +1 -1
  142. package/dist/esm/adapter/converters/texture-formats.js +0 -9
  143. package/dist/esm/adapter/converters/texture-formats.js.map +1 -1
  144. package/dist/esm/adapter/converters/vertex-formats.js +3 -0
  145. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -1
  146. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  147. package/dist/esm/adapter/device-helpers/get-device-info.js +4 -0
  148. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  149. package/dist/esm/adapter/helpers/get-shader-layout.js +2 -4
  150. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -1
  151. package/dist/esm/adapter/helpers/set-uniform.js +1 -1
  152. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -1
  153. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -1
  154. package/dist/esm/adapter/objects/webgl-renderbuffer.js +1 -1
  155. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -1
  156. package/dist/esm/adapter/objects/webgl-resource.js +1 -7
  157. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -1
  158. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  159. package/dist/esm/adapter/resources/webgl-buffer.js +0 -2
  160. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -1
  161. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -1
  162. package/dist/esm/adapter/resources/webgl-framebuffer.js +2 -2
  163. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -1
  164. package/dist/esm/adapter/resources/webgl-render-pipeline.js +4 -32
  165. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -1
  166. package/dist/esm/adapter/resources/webgl-sampler.js +4 -0
  167. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -1
  168. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -1
  169. package/dist/esm/adapter/resources/webgl-texture.js +1 -3
  170. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -1
  171. package/dist/esm/adapter/webgl-canvas-context.js +3 -0
  172. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -1
  173. package/dist/esm/adapter/webgl-device.js +5 -4
  174. package/dist/esm/adapter/webgl-device.js.map +1 -1
  175. package/dist/esm/classic/buffer.js.map +1 -1
  176. package/dist/esm/context/debug/webgl-developer-tools.js +1 -7
  177. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -1
  178. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  179. package/dist/esm/context/parameters/webgl-parameter-tables.js +15 -14
  180. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  181. package/dist/esm/context/polyfill/context-data.js +14 -0
  182. package/dist/esm/context/polyfill/context-data.js.map +1 -0
  183. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  184. package/dist/esm/context/polyfill/polyfill-context.js +4 -4
  185. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  186. package/dist/esm/context/polyfill/polyfill-table.js +5 -4
  187. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
  188. package/dist/esm/context/state-tracker/track-context-state.js +0 -1
  189. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  190. package/dist/esm/context/state-tracker/with-parameters.js +1 -1
  191. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
  192. package/package.json +4 -4
  193. package/src/adapter/converters/device-parameters.ts +11 -11
  194. package/src/adapter/converters/texture-formats.ts +12 -12
  195. package/src/adapter/converters/vertex-formats.ts +1 -0
  196. package/src/adapter/device-helpers/device-features.ts +0 -1
  197. package/src/adapter/device-helpers/get-device-info.ts +5 -1
  198. package/src/adapter/helpers/get-shader-layout.ts +18 -15
  199. package/src/adapter/helpers/set-uniform.ts +1 -1
  200. package/src/adapter/objects/constants-to-keys.ts +4 -1
  201. package/src/adapter/objects/webgl-renderbuffer.ts +5 -5
  202. package/src/adapter/objects/webgl-resource.ts +7 -12
  203. package/src/adapter/objects/webgl-vertex-array-object.ts +4 -4
  204. package/src/adapter/resources/webgl-buffer.ts +4 -4
  205. package/src/adapter/resources/webgl-command-encoder.ts +4 -4
  206. package/src/adapter/resources/webgl-framebuffer.ts +6 -5
  207. package/src/adapter/resources/webgl-render-pipeline.ts +24 -23
  208. package/src/adapter/resources/webgl-sampler.ts +5 -1
  209. package/src/adapter/resources/webgl-shader.ts +1 -1
  210. package/src/adapter/resources/webgl-texture.ts +5 -7
  211. package/src/adapter/webgl-canvas-context.ts +1 -0
  212. package/src/adapter/webgl-device.ts +10 -12
  213. package/src/classic/buffer.ts +7 -4
  214. package/src/context/debug/webgl-developer-tools.ts +7 -7
  215. package/src/context/parameters/unified-parameter-api.ts +1 -1
  216. package/src/context/parameters/webgl-parameter-tables.ts +113 -94
  217. package/src/context/{context/context-state.ts → polyfill/context-data.ts} +6 -10
  218. package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
  219. package/src/context/polyfill/polyfill-context.ts +5 -5
  220. package/src/context/polyfill/polyfill-table.ts +14 -13
  221. package/src/context/state-tracker/track-context-state.ts +0 -1
  222. package/src/context/state-tracker/with-parameters.ts +2 -1
  223. package/dist/context/context/context-state.d.ts.map +0 -1
  224. package/dist/context/context/context-state.js +0 -21
  225. package/dist/context/context/context-state.js.map +0 -1
  226. package/dist/es5/context/context/context-state.js +0 -26
  227. package/dist/es5/context/context/context-state.js.map +0 -1
  228. package/dist/esm/context/context/context-state.js +0 -21
  229. package/dist/esm/context/context/context-state.js.map +0 -1
@@ -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
  }
@@ -18,6 +18,7 @@ export default class WebGLCanvasContext extends CanvasContext {
18
18
  super(props);
19
19
  this.device = device;
20
20
  this.presentationSize = [-1, -1];
21
+ this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
21
22
  this.update();
22
23
  }
23
24
 
@@ -7,11 +7,10 @@ import type {
7
7
  CanvasContextProps,
8
8
  TextureFormat
9
9
  } from '@luma.gl/api';
10
- import {Device, CanvasContext, log, assert} from '@luma.gl/api';
10
+ import {Device, CanvasContext, log, uid} from '@luma.gl/api';
11
11
  import {isBrowser} from '@probe.gl/env';
12
12
  import {polyfillContext} from '../context/polyfill/polyfill-context';
13
13
  import {popContextState, pushContextState, trackContextState} from '../context/state-tracker/track-context-state';
14
- import {ContextState} from '../context/context/context-state';
15
14
  import {createBrowserContext} from '../context/context/create-browser-context';
16
15
  import {
17
16
  createHeadlessContext,
@@ -33,17 +32,17 @@ import {
33
32
  import type {
34
33
  BufferProps,
35
34
  ShaderProps,
36
- Sampler,
35
+ // Sampler,
37
36
  SamplerProps,
38
37
  TextureProps,
39
38
  ExternalTexture,
40
39
  ExternalTextureProps,
41
40
  FramebufferProps,
42
- RenderPipeline,
41
+ // RenderPipeline,
43
42
  RenderPipelineProps,
44
43
  ComputePipeline,
45
44
  ComputePipelineProps,
46
- RenderPass,
45
+ // RenderPass,
47
46
  RenderPassProps,
48
47
  ComputePass,
49
48
  ComputePassProps
@@ -60,10 +59,8 @@ import WEBGLRenderPipeline from './resources/webgl-render-pipeline';
60
59
 
61
60
  const LOG_LEVEL = 1;
62
61
 
63
- let counter = 0;
64
-
65
62
  /** WebGPU style Device API for a WebGL context */
66
- export default class WebGLDevice extends Device implements ContextState {
63
+ export default class WebGLDevice extends Device {
67
64
  //
68
65
  // Public `Device` API
69
66
  //
@@ -153,7 +150,7 @@ export default class WebGLDevice extends Device implements ContextState {
153
150
  //
154
151
 
155
152
  constructor(props: DeviceProps) {
156
- super(props);
153
+ super({...props, id: props.id || uid('webgl-device')});
157
154
 
158
155
  // If attaching to an already attached context, return the attached device
159
156
  // @ts-expect-error device is attached to context
@@ -175,7 +172,7 @@ export default class WebGLDevice extends Device implements ContextState {
175
172
  message: 'Computer entered sleep mode, or too many apps or browser tabs are using the GPU.'
176
173
  });
177
174
 
178
- let gl: WebGLRenderingContext | WebGL2RenderingContext | null = props.gl;
175
+ let gl: WebGLRenderingContext | WebGL2RenderingContext | null = props.gl || null;
179
176
  gl =
180
177
  gl ||
181
178
  (isBrowser() ? createBrowserContext(this.canvasContext.canvas, {...props, onContextLost}) : null);
@@ -239,7 +236,7 @@ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`
239
236
  * Destroys the context
240
237
  * @note Has no effect for browser contexts, there is no browser API for destroying contexts
241
238
  */
242
- destroy() {
239
+ destroy(): void {
243
240
  const ext = this.gl.getExtension('STACKGL_destroy_context');
244
241
  if (ext) {
245
242
  ext.destroy();
@@ -361,7 +358,8 @@ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`
361
358
 
362
359
  /** State used by luma.gl classes: TODO - move to canvasContext*/
363
360
  readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
364
- /** State used by luma.gl classes */
361
+
362
+ /** State used by luma.gl classes - TODO - not used? */
365
363
  readonly _extensions: Record<string, any> = {};
366
364
  _polyfilled: boolean = false;
367
365
 
@@ -1,5 +1,7 @@
1
+ // luma.gl, MIT license
2
+
1
3
  import type {Device, BufferProps, TypedArray} from '@luma.gl/api';
2
- import {Buffer, log, assert, checkProps} from '@luma.gl/api';
4
+ import {assert, checkProps} from '@luma.gl/api';
3
5
  import GL from '@luma.gl/constants';
4
6
  import {assertWebGL2Context} from '../context/context/webgl-checks';
5
7
  import {AccessorObject} from '../types';
@@ -106,7 +108,7 @@ export default class ClassicBuffer extends WEBGLBuffer {
106
108
  Object.seal(this);
107
109
  }
108
110
 
109
- destroy(): void {
111
+ override destroy(): void {
110
112
  if (this.handle) {
111
113
  this.removeStats();
112
114
  this.trackDeallocatedMemory();
@@ -116,9 +118,10 @@ export default class ClassicBuffer extends WEBGLBuffer {
116
118
  }
117
119
  }
118
120
 
119
- write(data: TypedArray, byteOffset?: number): void {
121
+ override write(data: TypedArray, byteOffset?: number): void {
120
122
  this.subData({data, offset: byteOffset});
121
123
  }
124
+
122
125
  // returns number of elements in the buffer (assuming that the full buffer is used)
123
126
  getElementCount(accessor: AccessorObject = this.accessor): number {
124
127
  return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));
@@ -278,7 +281,7 @@ export default class ClassicBuffer extends WEBGLBuffer {
278
281
  * Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.
279
282
  * @note WEBGL2 ONLY
280
283
  */
281
- getData(options?: {
284
+ override getData(options?: {
282
285
  dstData?: any;
283
286
  srcByteOffset?: number;
284
287
  dstOffset?: number;
@@ -1,5 +1,5 @@
1
1
  // luma.gl, MIT license
2
- import {log, loadScript} from '@luma.gl/api/';
2
+ import {log, loadScript} from '@luma.gl/api';
3
3
  import GL from '@luma.gl/constants';
4
4
 
5
5
  const WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';
@@ -11,12 +11,12 @@ type DebugContextProps = {
11
11
  webgl2?: boolean;
12
12
  };
13
13
 
14
- const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
15
- debug: true,
16
- throwOnError: false,
17
- break: [],
18
- webgl2: false,
19
- }
14
+ // const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
15
+ // debug: true,
16
+ // throwOnError: false,
17
+ // break: [],
18
+ // webgl2: false,
19
+ // }
20
20
 
21
21
  // Helper to get shared context data
22
22
  function getContextData(gl: any) {
@@ -10,7 +10,6 @@ import {
10
10
  GL_PARAMETER_GETTERS
11
11
  } from './webgl-parameter-tables';
12
12
 
13
- import {isWebGL} from '../context/webgl-checks';
14
13
  import WebGLDevice from '../../adapter/webgl-device';
15
14
 
16
15
  export type {GLParameters};
@@ -129,6 +128,7 @@ export function resetParameters(device: Device | WebGLRenderingContext): void {
129
128
 
130
129
  // Returns true if given object is empty, false otherwise.
131
130
  function isObjectEmpty(object) {
131
+ // @ts-ignore dummy key variable
132
132
  for (const key in object) {
133
133
  return false;
134
134
  }