@luma.gl/webgl 9.0.0-beta.4 → 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 (288) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +297 -155
  3. package/dist/adapter/converters/sampler-parameters.d.ts +0 -4
  4. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.js +73 -67
  6. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/shader-formats.js +53 -46
  8. package/dist/adapter/converters/texture-formats.d.ts +13 -19
  9. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  10. package/dist/adapter/converters/texture-formats.js +474 -879
  11. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  12. package/dist/adapter/converters/vertex-formats.js +53 -61
  13. package/dist/adapter/device-helpers/device-features.d.ts +2 -5
  14. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  15. package/dist/adapter/device-helpers/device-features.js +56 -87
  16. package/dist/adapter/device-helpers/device-limits.d.ts +2 -4
  17. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  18. package/dist/adapter/device-helpers/device-limits.js +88 -83
  19. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  20. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  21. package/dist/adapter/device-helpers/get-device-info.js +79 -63
  22. package/dist/adapter/device-helpers/webgl-device-features.d.ts +19 -0
  23. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  24. package/dist/adapter/device-helpers/webgl-device-features.js +86 -0
  25. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  26. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  27. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  28. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  29. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  30. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  31. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
  32. package/dist/adapter/helpers/decode-webgl-types.js +88 -76
  33. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  34. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  35. package/dist/adapter/helpers/get-shader-layout.js +261 -225
  36. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  37. package/dist/adapter/helpers/parse-shader-compiler-log.js +47 -37
  38. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  39. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  40. package/dist/adapter/helpers/set-uniform.js +68 -82
  41. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  42. package/dist/adapter/helpers/webgl-topology-utils.js +78 -93
  43. package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
  44. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  45. package/dist/adapter/objects/constants-to-keys.js +19 -12
  46. package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
  47. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  48. package/dist/adapter/objects/webgl-renderbuffer.js +86 -77
  49. package/dist/adapter/objects/webgl-resource.d.ts +3 -25
  50. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  51. package/dist/adapter/objects/webgl-resource.js +102 -146
  52. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  53. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  54. package/dist/adapter/resources/webgl-buffer.js +161 -119
  55. package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
  56. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgl-command-buffer.js +266 -168
  58. package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
  59. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-command-encoder.js +33 -39
  61. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  62. package/dist/adapter/resources/webgl-framebuffer.d.ts +8 -10
  63. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgl-framebuffer.js +167 -137
  65. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  66. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  67. package/dist/adapter/resources/webgl-query-set.js +136 -0
  68. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
  69. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-render-pass.js +124 -90
  71. package/dist/adapter/resources/webgl-render-pipeline.d.ts +15 -6
  72. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-render-pipeline.js +356 -221
  74. package/dist/adapter/resources/webgl-sampler.d.ts +1 -3
  75. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  76. package/dist/adapter/resources/webgl-sampler.js +43 -33
  77. package/dist/adapter/resources/webgl-shader.d.ts +12 -2
  78. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-shader.js +114 -47
  80. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  81. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  82. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  83. package/dist/adapter/resources/webgl-texture.d.ts +6 -9
  84. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  85. package/dist/adapter/resources/webgl-texture.js +615 -695
  86. package/dist/adapter/resources/webgl-transform-feedback.d.ts +2 -2
  87. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-transform-feedback.js +141 -143
  89. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
  90. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-vertex-array.js +229 -157
  92. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  93. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  94. package/dist/adapter/webgl-canvas-context.js +58 -36
  95. package/dist/adapter/webgl-device.d.ts +34 -40
  96. package/dist/adapter/webgl-device.d.ts.map +1 -1
  97. package/dist/adapter/webgl-device.js +418 -363
  98. package/dist/classic/accessor.d.ts.map +1 -1
  99. package/dist/classic/accessor.js +132 -101
  100. package/dist/classic/clear.d.ts +2 -2
  101. package/dist/classic/clear.d.ts.map +1 -1
  102. package/dist/classic/clear.js +73 -72
  103. package/dist/classic/copy-and-blit.d.ts +1 -1
  104. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  105. package/dist/classic/copy-and-blit.js +175 -175
  106. package/dist/classic/format-utils.d.ts +2 -2
  107. package/dist/classic/format-utils.d.ts.map +1 -1
  108. package/dist/classic/format-utils.js +39 -32
  109. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  110. package/dist/classic/typed-array-utils.js +96 -81
  111. package/dist/context/context/context-data.d.ts +14 -0
  112. package/dist/context/context/context-data.d.ts.map +1 -0
  113. package/dist/context/context/context-data.js +33 -0
  114. package/dist/context/context/create-browser-context.d.ts +1 -6
  115. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  116. package/dist/context/context/create-browser-context.js +62 -49
  117. package/dist/context/debug/spector.d.ts.map +1 -1
  118. package/dist/context/debug/spector.js +55 -50
  119. package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
  120. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  121. package/dist/context/debug/webgl-developer-tools.js +104 -77
  122. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  123. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  124. package/dist/context/helpers/create-browser-context.js +67 -0
  125. package/dist/context/{polyfill/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -2
  126. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  127. package/dist/context/helpers/webgl-context-data.js +21 -0
  128. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  129. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  130. package/dist/context/helpers/webgl-extensions.js +10 -0
  131. package/dist/context/parameters/unified-parameter-api.d.ts +3 -3
  132. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  133. package/dist/context/parameters/unified-parameter-api.js +94 -44
  134. package/dist/context/parameters/webgl-parameter-tables.d.ts +120 -99
  135. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  136. package/dist/context/parameters/webgl-parameter-tables.js +469 -404
  137. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  138. package/dist/context/state-tracker/deep-array-equal.js +19 -14
  139. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  140. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  141. package/dist/context/state-tracker/track-context-state.js +188 -123
  142. package/dist/context/state-tracker/with-parameters.d.ts +2 -2
  143. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  144. package/dist/context/state-tracker/with-parameters.js +43 -26
  145. package/dist/dist.dev.js +3135 -4142
  146. package/dist/index.cjs +1766 -2717
  147. package/dist/index.cjs.map +7 -0
  148. package/dist/index.d.ts +25 -28
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +16 -5
  151. package/dist/types.d.ts.map +1 -1
  152. package/dist/types.js +3 -1
  153. package/dist.min.js +9 -42
  154. package/package.json +11 -15
  155. package/src/adapter/converters/device-parameters.ts +105 -17
  156. package/src/adapter/converters/sampler-parameters.ts +12 -20
  157. package/src/adapter/converters/shader-formats.ts +47 -22
  158. package/src/adapter/converters/texture-formats.ts +138 -185
  159. package/src/adapter/converters/vertex-formats.ts +3 -3
  160. package/src/adapter/device-helpers/webgl-device-features.ts +101 -0
  161. package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +30 -22
  162. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  163. package/src/adapter/helpers/decode-webgl-types.ts +13 -7
  164. package/src/adapter/helpers/get-shader-layout.ts +21 -31
  165. package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
  166. package/src/adapter/helpers/set-uniform.ts +3 -4
  167. package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
  168. package/src/adapter/objects/constants-to-keys.ts +3 -2
  169. package/src/adapter/objects/webgl-renderbuffer.ts +38 -16
  170. package/src/adapter/objects/webgl-resource.ts +7 -140
  171. package/src/adapter/resources/webgl-buffer.ts +10 -14
  172. package/src/adapter/resources/webgl-command-buffer.ts +24 -34
  173. package/src/adapter/resources/webgl-command-encoder.ts +14 -11
  174. package/src/adapter/resources/webgl-external-texture.ts +5 -5
  175. package/src/adapter/resources/webgl-framebuffer.ts +38 -34
  176. package/src/adapter/resources/webgl-query-set.ts +171 -0
  177. package/src/adapter/resources/webgl-render-pass.ts +24 -15
  178. package/src/adapter/resources/webgl-render-pipeline.ts +138 -70
  179. package/src/adapter/resources/webgl-sampler.ts +7 -10
  180. package/src/adapter/resources/webgl-shader.ts +65 -11
  181. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  182. package/src/adapter/resources/webgl-texture.ts +38 -105
  183. package/src/adapter/resources/webgl-transform-feedback.ts +16 -22
  184. package/src/adapter/resources/webgl-vertex-array.ts +20 -21
  185. package/src/adapter/webgl-canvas-context.ts +7 -11
  186. package/src/adapter/webgl-device.ts +106 -151
  187. package/src/classic/accessor.ts +5 -4
  188. package/src/classic/clear.ts +25 -20
  189. package/src/classic/copy-and-blit.ts +12 -6
  190. package/src/classic/format-utils.ts +2 -1
  191. package/src/classic/typed-array-utils.ts +3 -7
  192. package/src/context/debug/spector.ts +9 -6
  193. package/src/context/debug/webgl-developer-tools.ts +31 -20
  194. package/src/context/{context → helpers}/create-browser-context.ts +9 -33
  195. package/src/context/{polyfill/context-data.ts → helpers/webgl-context-data.ts} +3 -2
  196. package/src/context/helpers/webgl-extensions.ts +17 -0
  197. package/src/context/parameters/unified-parameter-api.ts +5 -4
  198. package/src/context/parameters/webgl-parameter-tables.ts +118 -90
  199. package/src/context/state-tracker/deep-array-equal.ts +2 -1
  200. package/src/context/state-tracker/track-context-state.ts +29 -23
  201. package/src/context/state-tracker/with-parameters.ts +7 -2
  202. package/src/index.ts +4 -18
  203. package/src/types.ts +2 -1
  204. package/dist/adapter/converters/device-parameters.js.map +0 -1
  205. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  206. package/dist/adapter/converters/shader-formats.js.map +0 -1
  207. package/dist/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  209. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  210. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  211. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  212. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  213. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  214. package/dist/adapter/device-helpers/is-old-ie.js +0 -9
  215. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  216. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  217. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  218. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  219. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  220. package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
  221. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  222. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  223. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  224. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  225. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  226. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  227. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  228. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  229. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  230. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  231. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  232. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  233. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  234. package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
  235. package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
  236. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  237. package/dist/adapter/webgl-device.js.map +0 -1
  238. package/dist/classic/accessor.js.map +0 -1
  239. package/dist/classic/clear.js.map +0 -1
  240. package/dist/classic/copy-and-blit.js.map +0 -1
  241. package/dist/classic/format-utils.js.map +0 -1
  242. package/dist/classic/typed-array-utils.js.map +0 -1
  243. package/dist/context/context/create-browser-context.js.map +0 -1
  244. package/dist/context/context/create-headless-context.d.ts +0 -9
  245. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  246. package/dist/context/context/create-headless-context.js +0 -42
  247. package/dist/context/context/create-headless-context.js.map +0 -1
  248. package/dist/context/context/webgl-checks.d.ts +0 -13
  249. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  250. package/dist/context/context/webgl-checks.js +0 -31
  251. package/dist/context/context/webgl-checks.js.map +0 -1
  252. package/dist/context/debug/spector.js.map +0 -1
  253. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  254. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  255. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  256. package/dist/context/polyfill/context-data.d.ts.map +0 -1
  257. package/dist/context/polyfill/context-data.js +0 -12
  258. package/dist/context/polyfill/context-data.js.map +0 -1
  259. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  260. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  261. package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
  262. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  263. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  264. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  265. package/dist/context/polyfill/polyfill-context.js +0 -87
  266. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  267. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  268. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  269. package/dist/context/polyfill/polyfill-table.js +0 -137
  270. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  271. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  272. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  273. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
  274. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  275. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  276. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  277. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  278. package/dist/index.js.map +0 -1
  279. package/dist/types.js.map +0 -1
  280. package/src/adapter/device-helpers/device-features.ts +0 -161
  281. package/src/adapter/device-helpers/device-limits.ts +0 -155
  282. package/src/adapter/device-helpers/is-old-ie.ts +0 -14
  283. package/src/context/context/create-headless-context.ts +0 -51
  284. package/src/context/context/webgl-checks.ts +0 -51
  285. package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
  286. package/src/context/polyfill/polyfill-context.ts +0 -104
  287. package/src/context/polyfill/polyfill-table.ts +0 -167
  288. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -365
@@ -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
  // Texture class.
@@ -14,7 +15,7 @@ import {
14
15
  SamplerParameters,
15
16
  TypedArray
16
17
  } from '@luma.gl/core';
17
- import {Texture, log, assert, isPowerOfTwo, loadImage, isObjectEmpty} from '@luma.gl/core';
18
+ import {Texture, log, assert, loadImage, isObjectEmpty} from '@luma.gl/core';
18
19
  import {GL, GLSamplerParameters} from '@luma.gl/constants';
19
20
  import {withGLParameters} from '../../context/state-tracker/with-parameters';
20
21
  import {
@@ -22,13 +23,11 @@ import {
22
23
  getWebGLTextureParameters,
23
24
  getTextureFormatBytesPerPixel
24
25
  } from '../converters/texture-formats';
25
- import {
26
- convertSamplerParametersToWebGL,
27
- updateSamplerParametersForNPOT
28
- } from '../converters/sampler-parameters';
26
+ import {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';
29
27
  import {WebGLDevice} from '../webgl-device';
30
28
  import {WEBGLBuffer} from './webgl-buffer';
31
29
  import {WEBGLSampler} from './webgl-sampler';
30
+ import {WEBGLTextureView} from './webgl-texture-view';
32
31
 
33
32
  export type WEBGLTextureProps = TextureProps & {
34
33
  /** @deprecated use props.sampler */
@@ -151,13 +150,14 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
151
150
 
152
151
  readonly MAX_ATTRIBUTES: number;
153
152
  readonly device: WebGLDevice;
154
- readonly gl: WebGLRenderingContext;
155
- readonly gl2: WebGL2RenderingContext | null;
153
+ readonly gl: WebGL2RenderingContext;
156
154
  readonly handle: WebGLTexture;
157
155
 
158
- /** Sampler object (currently unused) */
156
+ // (TODO - currently unused in WebGL, but WebGL 2 does support sampler objects) */
159
157
  sampler: WEBGLSampler = undefined;
160
158
 
159
+ view: WEBGLTextureView = undefined;
160
+
161
161
  // data;
162
162
 
163
163
  glFormat: GL = undefined;
@@ -194,7 +194,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
194
194
 
195
195
  this.device = device as WebGLDevice;
196
196
  this.gl = this.device.gl;
197
- this.gl2 = this.device.gl2;
198
197
  this.handle = this.props.handle || this.gl.createTexture();
199
198
  this.device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data}); // {name: this.props.id};
200
199
 
@@ -260,7 +259,7 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
260
259
 
261
260
  const {parameters = {} as Record<GL, any>} = props;
262
261
 
263
- const {pixels = null, pixelStore = {}, textureUnit = undefined} = props;
262
+ const {pixels = null, pixelStore = {}, textureUnit = undefined, mipmaps = true} = props;
264
263
 
265
264
  // pixels variable is for API compatibility purpose
266
265
  if (!data) {
@@ -270,10 +269,10 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
270
269
  data = pixels;
271
270
  }
272
271
 
273
- let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;
272
+ let {width, height, dataFormat, type, compressed = false} = props;
274
273
  const {depth = 0} = props;
275
274
 
276
- const glFormat = convertTextureFormatToGL(props.format, this.device.isWebGL2);
275
+ const glFormat = convertTextureFormatToGL(props.format);
277
276
 
278
277
  // Deduce width and height
279
278
  ({width, height, compressed, dataFormat, type} = this._deduceParameters({
@@ -300,11 +299,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
300
299
  this.gl.bindTexture(this.target, this.handle);
301
300
  }
302
301
 
303
- if (mipmaps && this.device.isWebGL1 && isNPOT(this.width, this.height)) {
304
- log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaps`)();
305
- mipmaps = false;
306
- }
307
-
308
302
  this.mipmaps = mipmaps;
309
303
 
310
304
  this.setImageData({
@@ -324,6 +318,9 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
324
318
  this.setSampler(props.sampler);
325
319
  this._setSamplerParameters(parameters);
326
320
 
321
+ // @ts-ignore
322
+ this.view = new WEBGLTextureView(this.device, {...this.props, texture: this});
323
+
327
324
  if (mipmaps) {
328
325
  this.generateMipmap();
329
326
  }
@@ -372,7 +369,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
372
369
  samplerProps = sampler as SamplerProps;
373
370
  }
374
371
 
375
- // TODO - technically, this is only needed in WebGL1. In WebGL2 we could always use the sampler.
376
372
  const parameters = convertSamplerParametersToWebGL(samplerProps);
377
373
  this._setSamplerParameters(parameters);
378
374
  return this;
@@ -418,11 +414,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
418
414
 
419
415
  // Call to regenerate mipmaps after modifying texture(s)
420
416
  generateMipmap(params = {}): this {
421
- if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
422
- log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();
423
- return this;
424
- }
425
-
426
417
  this.mipmaps = true;
427
418
 
428
419
  this.gl.bindTexture(this.target, this.handle);
@@ -500,8 +491,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
500
491
  let dataType = null;
501
492
  ({data, dataType} = this._getDataType({data, compressed}));
502
493
 
503
- let gl2;
504
-
505
494
  withGLParameters(this.gl, parameters, () => {
506
495
  switch (dataType) {
507
496
  case 'null':
@@ -518,8 +507,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
518
507
  );
519
508
  break;
520
509
  case 'typed-array':
521
- // Looks like this assert is not necessary, as offset is ignored under WebGL1
522
- // assert((offset === 0 || this.device.isWebGL2), 'offset supported in WebGL2 only');
523
510
  gl.texImage2D(
524
511
  target,
525
512
  level,
@@ -530,15 +517,13 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
530
517
  dataFormat,
531
518
  type,
532
519
  data,
533
- // @ts-expect-error
534
520
  offset
535
521
  );
536
522
  break;
537
523
  case 'buffer':
538
524
  // WebGL2 enables creating textures directly from a WebGL buffer
539
- gl2 = this.device.assertWebGL2();
540
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);
541
- gl2.texImage2D(
525
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);
526
+ this.device.gl.texImage2D(
542
527
  target,
543
528
  level,
544
529
  glFormat,
@@ -549,24 +534,20 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
549
534
  type,
550
535
  offset
551
536
  );
552
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
537
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
553
538
  break;
554
539
  case 'browser-object':
555
- if (this.device.isWebGL2) {
556
- gl.texImage2D(
557
- target,
558
- level,
559
- glFormat,
560
- width,
561
- height,
562
- 0 /* border*/,
563
- dataFormat,
564
- type,
565
- data
566
- );
567
- } else {
568
- gl.texImage2D(target, level, glFormat, dataFormat, type, data);
569
- }
540
+ gl.texImage2D(
541
+ target,
542
+ level,
543
+ glFormat,
544
+ width,
545
+ height,
546
+ 0 /* border*/,
547
+ dataFormat,
548
+ type,
549
+ data
550
+ );
570
551
  break;
571
552
  case 'compressed':
572
553
  for (const [levelIndex, levelData] of data.entries()) {
@@ -590,7 +571,7 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
590
571
  if (data && data.byteLength) {
591
572
  this.trackAllocatedMemory(data.byteLength, 'Texture');
592
573
  } else {
593
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
574
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format);
594
575
  this.trackAllocatedMemory(this.width * this.height * bytesPerPixel, 'Texture');
595
576
  }
596
577
 
@@ -659,22 +640,16 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
659
640
  } else if (data === null) {
660
641
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
661
642
  } else if (ArrayBuffer.isView(data)) {
662
- // const gl2 = this.device.assertWebGL2();
663
- // @ts-expect-error last offset parameter is ignored under WebGL1
664
643
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);
665
644
  } else if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
666
645
  // WebGL2 allows us to create texture directly from a WebGL buffer
667
- const gl2 = this.device.assertWebGL2();
668
646
  // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER
669
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);
670
- gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);
671
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
672
- } else if (this.device.isWebGL2) {
673
- // Assume data is a browser supported object (ImageData, Canvas, ...)
674
- const gl2 = this.device.assertWebGL2();
675
- gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);
647
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);
648
+ this.device.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);
649
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
676
650
  } else {
677
- this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);
651
+ // Assume data is a browser supported object (ImageData, Canvas, ...)
652
+ this.device.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);
678
653
  }
679
654
  });
680
655
 
@@ -754,7 +729,7 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
754
729
  let {width, height, dataFormat, type, compressed} = opts;
755
730
 
756
731
  // Deduce format and type from format
757
- const parameters = getWebGLTextureParameters(format, this.device.isWebGL2);
732
+ const parameters = getWebGLTextureParameters(format);
758
733
  dataFormat = dataFormat || parameters.dataFormat;
759
734
  type = type || parameters.type;
760
735
  compressed = compressed || parameters.compressed;
@@ -910,11 +885,10 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
910
885
 
911
886
  this.gl.bindTexture(this.target, this.handle);
912
887
 
913
- const webglTextureFormat = getWebGLTextureParameters(format, this.device.isWebGL2);
888
+ const webglTextureFormat = getWebGLTextureParameters(format);
914
889
 
915
890
  withGLParameters(this.gl, parameters, () => {
916
891
  if (ArrayBuffer.isView(data)) {
917
- // @ts-expect-error
918
892
  this.gl.texImage3D(
919
893
  this.target,
920
894
  level,
@@ -931,7 +905,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
931
905
 
932
906
  if (data instanceof WEBGLBuffer) {
933
907
  this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);
934
- // @ts-expect-error
935
908
  this.gl.texImage3D(
936
909
  this.target,
937
910
  level,
@@ -950,7 +923,7 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
950
923
  if (data && data.byteLength) {
951
924
  this.trackAllocatedMemory(data.byteLength, 'Texture');
952
925
  } else {
953
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
926
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format);
954
927
  this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');
955
928
  }
956
929
 
@@ -963,14 +936,8 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
963
936
 
964
937
  /**
965
938
  * Sets sampler parameters on texture
966
- * @note: Applies NPOT workaround if appropriate
967
939
  */
968
940
  _setSamplerParameters(parameters: GLSamplerParameters): void {
969
- // Work around WebGL1 sampling restrictions on NPOT textures
970
- if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
971
- parameters = updateSamplerParametersForNPOT(parameters);
972
- }
973
-
974
941
  // NPOT parameters may populate an empty object
975
942
  if (isObjectEmpty(parameters)) {
976
943
  return;
@@ -999,32 +966,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
999
966
  this.gl.bindTexture(this.target, null);
1000
967
  return;
1001
968
  }
1002
-
1003
- /** @deprecated For LegacyTexture subclass */
1004
- protected _getWebGL1NPOTParameterOverride(
1005
- pname: GL.TEXTURE_MIN_FILTER | GL.TEXTURE_WRAP_S | GL.TEXTURE_WRAP_T,
1006
- value: GL.LINEAR | GL.NEAREST
1007
- ): number {
1008
- // NOTE: Apply NPOT workaround
1009
- const npot = this.device.isWebGL1 && isNPOT(this.width, this.height);
1010
- if (npot) {
1011
- switch (pname) {
1012
- case GL.TEXTURE_MIN_FILTER:
1013
- if (value !== GL.LINEAR && value !== GL.NEAREST) {
1014
- // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();
1015
- return GL.LINEAR;
1016
- }
1017
- break;
1018
- case GL.TEXTURE_WRAP_S:
1019
- case GL.TEXTURE_WRAP_T:
1020
- // if (value !== GL.CLAMP_TO_EDGE) { log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)(); }
1021
- return GL.CLAMP_TO_EDGE;
1022
- default:
1023
- break;
1024
- }
1025
- }
1026
- return value;
1027
- }
1028
969
  }
1029
970
 
1030
971
  // HELPERS
@@ -1049,14 +990,6 @@ function getWebGLTextureTarget(props: TextureProps) {
1049
990
  }
1050
991
  }
1051
992
 
1052
- function isNPOT(width: number, height: number): boolean {
1053
- // Width and height not available, avoid classifying as NPOT texture
1054
- if (!width || !height) {
1055
- return false;
1056
- }
1057
- return !isPowerOfTwo(width) || !isPowerOfTwo(height);
1058
- }
1059
-
1060
993
  function logParameters(parameters: Record<number, GL | number>) {
1061
994
  log.log(1, 'texture sampler parameters', parameters)();
1062
995
  }
@@ -2,12 +2,12 @@ import type {PrimitiveTopology, ShaderLayout, TransformFeedbackProps} from '@lum
2
2
  import {log, TransformFeedback, Buffer, BufferRange} from '@luma.gl/core';
3
3
  import {GL} from '@luma.gl/constants';
4
4
  import {WebGLDevice} from '../webgl-device';
5
- import {WEBGLBuffer} from '../..';
5
+ import {WEBGLBuffer} from '../../index';
6
6
  import {getGLPrimitive} from '../helpers/webgl-topology-utils';
7
7
 
8
8
  export class WEBGLTransformFeedback extends TransformFeedback {
9
9
  readonly device: WebGLDevice;
10
- readonly gl2: WebGL2RenderingContext;
10
+ readonly gl: WebGL2RenderingContext;
11
11
  readonly handle: WebGLTransformFeedback;
12
12
 
13
13
  /**
@@ -29,10 +29,9 @@ export class WEBGLTransformFeedback extends TransformFeedback {
29
29
  constructor(device: WebGLDevice, props: TransformFeedbackProps) {
30
30
  super(device, props);
31
31
 
32
- device.assertWebGL2();
33
32
  this.device = device;
34
- this.gl2 = device.gl2;
35
- this.handle = this.props.handle || this.gl2.createTransformFeedback();
33
+ this.gl = device.gl;
34
+ this.handle = this.props.handle || this.gl.createTransformFeedback();
36
35
  this.layout = this.props.layout;
37
36
 
38
37
  if (props.buffers) {
@@ -43,24 +42,24 @@ export class WEBGLTransformFeedback extends TransformFeedback {
43
42
  }
44
43
 
45
44
  override destroy(): void {
46
- this.gl2.deleteTransformFeedback(this.handle);
45
+ this.gl.deleteTransformFeedback(this.handle);
47
46
  super.destroy();
48
47
  }
49
48
 
50
49
  begin(topology: PrimitiveTopology = 'point-list'): void {
51
- this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);
50
+ this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);
52
51
  if (this.bindOnUse) {
53
52
  this._bindBuffers();
54
53
  }
55
- this.gl2.beginTransformFeedback(getGLPrimitive(topology));
54
+ this.gl.beginTransformFeedback(getGLPrimitive(topology));
56
55
  }
57
56
 
58
57
  end(): void {
59
- this.gl2.endTransformFeedback();
58
+ this.gl.endTransformFeedback();
60
59
  if (!this.bindOnUse) {
61
60
  this._unbindBuffers();
62
61
  }
63
- this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);
62
+ this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);
64
63
  }
65
64
 
66
65
  // SUBCLASS
@@ -105,18 +104,18 @@ export class WEBGLTransformFeedback extends TransformFeedback {
105
104
 
106
105
  bind(funcOrHandle = this.handle) {
107
106
  if (typeof funcOrHandle !== 'function') {
108
- this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, funcOrHandle);
107
+ this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, funcOrHandle);
109
108
  return this;
110
109
  }
111
110
 
112
111
  let value: unknown;
113
112
 
114
113
  if (!this._bound) {
115
- this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);
114
+ this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);
116
115
  this._bound = true;
117
116
  value = funcOrHandle();
118
117
  this._bound = false;
119
- this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);
118
+ this.gl.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);
120
119
  } else {
121
120
  value = funcOrHandle();
122
121
  }
@@ -171,21 +170,16 @@ export class WEBGLTransformFeedback extends TransformFeedback {
171
170
 
172
171
  protected _unbindBuffers(): void {
173
172
  for (const bufferIndex in this.buffers) {
174
- this.gl2.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, Number(bufferIndex), null);
173
+ this.gl.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, Number(bufferIndex), null);
175
174
  }
176
175
  }
177
176
 
178
- protected _bindBuffer(
179
- index: number,
180
- buffer: Buffer,
181
- byteOffset = 0,
182
- byteLength?: number
183
- ): void {
177
+ protected _bindBuffer(index: number, buffer: Buffer, byteOffset = 0, byteLength?: number): void {
184
178
  const handle = buffer && (buffer as WEBGLBuffer).handle;
185
179
  if (!handle || byteLength === undefined) {
186
- this.gl2.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);
180
+ this.gl.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);
187
181
  } else {
188
- this.gl2.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteLength);
182
+ this.gl.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteLength);
189
183
  }
190
184
  }
191
185
  }
@@ -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, Buffer, VertexArrayProps, TypedArray, NumberArray} from '@luma.gl/core';
@@ -28,14 +29,14 @@ export class WEBGLVertexArray extends VertexArray {
28
29
 
29
30
  /** * Attribute 0 can not be disable on most desktop OpenGL based browsers */
30
31
  static isConstantAttributeZeroSupported(device: Device): boolean {
31
- return device.info.type === 'webgl2' || getBrowser() === 'Chrome';
32
+ return getBrowser() === 'Chrome';
32
33
  }
33
34
 
34
35
  // Create a VertexArray
35
36
  constructor(device: WebGLDevice, props?: VertexArrayProps) {
36
37
  super(device, props);
37
38
  this.device = device;
38
- this.handle = this.device.gl2.createVertexArray();
39
+ this.handle = this.device.gl.createVertexArray();
39
40
  }
40
41
 
41
42
  override destroy(): void {
@@ -44,7 +45,7 @@ export class WEBGLVertexArray extends VertexArray {
44
45
  this.buffer?.destroy();
45
46
  }
46
47
  if (this.handle) {
47
- this.device.gl2.deleteVertexArray(this.handle);
48
+ this.device.gl.deleteVertexArray(this.handle);
48
49
  // @ts-expect-error read-only/undefined
49
50
  this.handle = undefined!;
50
51
  }
@@ -66,9 +67,9 @@ export class WEBGLVertexArray extends VertexArray {
66
67
  throw new Error('Use .setBuffer()');
67
68
  }
68
69
  // In WebGL The GL.ELEMENT_ARRAY_BUFFER_BINDING is stored on the VertexArrayObject
69
- this.device.gl2.bindVertexArray(this.handle);
70
+ this.device.gl.bindVertexArray(this.handle);
70
71
  // TODO - this initial binding does not seem to take effect? see bindBeforeRender()
71
- this.device.gl2.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, buffer ? buffer.handle : null);
72
+ this.device.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, buffer ? buffer.handle : null);
72
73
  // log.log(1, 'VertexArray.setIndexBuffer', indexBuffer)();
73
74
  // log.log(1, `Binding vertex array ${this.id}`, buffer?.id)();
74
75
 
@@ -85,14 +86,13 @@ export class WEBGLVertexArray extends VertexArray {
85
86
 
86
87
  const {size, type, stride, offset, normalized, integer, divisor} = this._getAccessor(location);
87
88
 
88
- this.device.gl2.bindVertexArray(this.handle);
89
+ this.device.gl.bindVertexArray(this.handle);
89
90
  // A non-zero buffer object must be bound to the GL_ARRAY_BUFFER target
90
91
  this.device.gl.bindBuffer(GL.ARRAY_BUFFER, buffer.handle);
91
92
 
92
93
  // WebGL2 supports *integer* data formats, i.e. GPU will see integer values
93
94
  if (integer) {
94
- this.device.assertWebGL2();
95
- this.device.gl2.vertexAttribIPointer(location, size, type, stride, offset);
95
+ this.device.gl.vertexAttribIPointer(location, size, type, stride, offset);
96
96
  } else {
97
97
  // Attaches ARRAY_BUFFER with specified buffer format to location
98
98
  this.device.gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
@@ -101,13 +101,13 @@ export class WEBGLVertexArray extends VertexArray {
101
101
  // Mark as non-constant
102
102
  this.device.gl.enableVertexAttribArray(location);
103
103
  // Set the step mode 0=vertex, 1=instance
104
- this.device.gl2.vertexAttribDivisor(location, divisor || 0);
104
+ this.device.gl.vertexAttribDivisor(location, divisor || 0);
105
105
 
106
106
  this.attributes[location] = buffer;
107
107
  }
108
108
 
109
109
  /** Set a location in vertex attributes array to a constant value, disables the location */
110
- override setConstant(location: number, value: TypedArray): void {
110
+ override setConstantWebGL(location: number, value: TypedArray): void {
111
111
  this._enable(location, false);
112
112
  this.attributes[location] = value;
113
113
  }
@@ -115,12 +115,12 @@ export class WEBGLVertexArray extends VertexArray {
115
115
  init = false;
116
116
 
117
117
  override bindBeforeRender(): void {
118
- this.device.gl2.bindVertexArray(this.handle);
118
+ this.device.gl.bindVertexArray(this.handle);
119
119
  // TODO - the initial bind does not seem to take effect.
120
120
  if (!this.init) {
121
121
  // log.log(1, `Binding vertex array ${this.id}`, this.indexBuffer?.id)();
122
122
  const webglBuffer = this.indexBuffer as WEBGLBuffer;
123
- this.device.gl2.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, webglBuffer?.handle || null);
123
+ this.device.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, webglBuffer?.handle || null);
124
124
  this.init = true;
125
125
  }
126
126
  this._applyConstantAttributes();
@@ -130,8 +130,8 @@ export class WEBGLVertexArray extends VertexArray {
130
130
  // log.log(1, `Unbinding vertex array ${this.id}`)();
131
131
  // TODO technically this is not necessary, but we might be interfacing
132
132
  // with code that does not use vertex array objects
133
- this.device.gl2.bindVertexArray(null);
134
- // this.device.gl2.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, null);
133
+ this.device.gl.bindVertexArray(null);
134
+ // this.device.gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, null);
135
135
  }
136
136
 
137
137
  // Internal methods
@@ -147,7 +147,7 @@ export class WEBGLVertexArray extends VertexArray {
147
147
  const constant = this.attributes[location];
148
148
  // A typed array means this is a constant
149
149
  if (ArrayBuffer.isView(constant)) {
150
- this.device.setConstantAttribute(location, constant);
150
+ this.device.setConstantAttributeWebGL(location, constant);
151
151
  }
152
152
  }
153
153
  }
@@ -161,13 +161,12 @@ export class WEBGLVertexArray extends VertexArray {
161
161
 
162
162
  // // WebGL2 supports *integer* data formats, i.e. GPU will see integer values
163
163
  // if (integer) {
164
- // this.device.assertWebGL2();
165
- // this.device.gl2.vertexAttribIPointer(location, size, type, stride, offset);
164
+ // this.device.gl.vertexAttribIPointer(location, size, type, stride, offset);
166
165
  // } else {
167
166
  // // Attaches ARRAY_BUFFER with specified buffer format to location
168
167
  // this.device.gl.vertexAttribPointer(location, size, type, normalized, stride, offset);
169
168
  // }
170
- // this.device.gl2.vertexAttribDivisor(location, divisor || 0);
169
+ // this.device.gl.vertexAttribDivisor(location, divisor || 0);
171
170
  // }
172
171
 
173
172
  /** Get an accessor from the */
@@ -206,13 +205,13 @@ export class WEBGLVertexArray extends VertexArray {
206
205
 
207
206
  if (enable || canDisableAttribute) {
208
207
  location = Number(location);
209
- this.device.gl2.bindVertexArray(this.handle);
208
+ this.device.gl.bindVertexArray(this.handle);
210
209
  if (enable) {
211
210
  this.device.gl.enableVertexAttribArray(location);
212
211
  } else {
213
212
  this.device.gl.disableVertexAttribArray(location);
214
213
  }
215
- this.device.gl2.bindVertexArray(null);
214
+ this.device.gl.bindVertexArray(null);
216
215
  }
217
216
  }
218
217
 
@@ -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 {CanvasContextProps} from '@luma.gl/core';
@@ -6,8 +7,8 @@ import {CanvasContext} from '@luma.gl/core';
6
7
  import {WebGLDevice} from './webgl-device';
7
8
  import {WEBGLFramebuffer} from './resources/webgl-framebuffer';
8
9
 
9
- /**
10
- * A WebGL Canvas Context which manages the canvas and handles drawing buffer resizing etc
10
+ /**
11
+ * A WebGL Canvas Context which manages the canvas and handles drawing buffer resizing etc
11
12
  */
12
13
  export class WebGLCanvasContext extends CanvasContext {
13
14
  readonly device: WebGLDevice;
@@ -33,7 +34,8 @@ export class WebGLCanvasContext extends CanvasContext {
33
34
  /** Resizes and updates render targets if necessary */
34
35
  update() {
35
36
  const size = this.getPixelSize();
36
- const sizeChanged = size[0] !== this.presentationSize[0] || size[1] !== this.presentationSize[1];
37
+ const sizeChanged =
38
+ size[0] !== this.presentationSize[0] || size[1] !== this.presentationSize[1];
37
39
  if (sizeChanged) {
38
40
  this.presentationSize = size;
39
41
  this.resize();
@@ -61,18 +63,12 @@ export class WebGLCanvasContext extends CanvasContext {
61
63
  this.setDevicePixelRatio(devicePixelRatio, options);
62
64
  return;
63
65
  }
64
-
65
- // Resize headless gl context
66
- const ext = this.device.gl.getExtension('STACKGL_resize_drawingbuffer');
67
- if (ext && options && 'width' in options && 'height' in options) {
68
- ext.resize(options.width, options.height);
69
- }
70
66
  }
71
67
 
72
68
  commit() {
73
69
  // gl.commit was ultimately removed from the WebGL standard??
74
70
  // if (this.offScreen && this.gl.commit) {
75
- // // @ts-expect-error gl.commit is not officially part of WebGLRenderingContext
71
+ // // @ts-expect-error gl.commit is not officially part of WebGL2RenderingContext
76
72
  // this.gl.commit();
77
73
  // }
78
74
  }