@luma.gl/webgl 9.0.0-beta.1 → 9.0.0-beta.10

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 (285) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +295 -156
  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 +17 -21
  9. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  10. package/dist/adapter/converters/texture-formats.js +481 -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/webgl-device-features.d.ts +20 -0
  14. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  15. package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
  16. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  17. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  18. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  19. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  20. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  21. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  22. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
  23. package/dist/adapter/helpers/decode-webgl-types.js +88 -76
  24. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  25. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  26. package/dist/adapter/helpers/get-shader-layout.js +261 -225
  27. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  28. package/dist/adapter/helpers/parse-shader-compiler-log.js +47 -37
  29. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  30. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  31. package/dist/adapter/helpers/set-uniform.js +68 -82
  32. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  33. package/dist/adapter/helpers/webgl-topology-utils.js +78 -93
  34. package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
  35. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  36. package/dist/adapter/objects/constants-to-keys.js +19 -12
  37. package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
  38. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  39. package/dist/adapter/objects/webgl-renderbuffer.js +86 -77
  40. package/dist/adapter/objects/webgl-resource.d.ts +3 -25
  41. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  42. package/dist/adapter/objects/webgl-resource.js +102 -147
  43. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  44. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgl-buffer.js +159 -117
  46. package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
  47. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  48. package/dist/adapter/resources/webgl-command-buffer.js +266 -168
  49. package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
  50. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-command-encoder.js +33 -39
  52. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  53. package/dist/adapter/resources/webgl-framebuffer.d.ts +8 -12
  54. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-framebuffer.js +174 -139
  56. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  57. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  58. package/dist/adapter/resources/webgl-query-set.js +136 -0
  59. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
  60. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgl-render-pass.js +124 -90
  62. package/dist/adapter/resources/webgl-render-pipeline.d.ts +15 -6
  63. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgl-render-pipeline.js +362 -221
  65. package/dist/adapter/resources/webgl-sampler.d.ts +1 -3
  66. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  67. package/dist/adapter/resources/webgl-sampler.js +43 -33
  68. package/dist/adapter/resources/webgl-shader.d.ts +12 -2
  69. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-shader.js +114 -47
  71. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  72. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  73. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  74. package/dist/adapter/resources/webgl-texture.d.ts +8 -10
  75. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  76. package/dist/adapter/resources/webgl-texture.js +616 -694
  77. package/dist/adapter/resources/webgl-transform-feedback.d.ts +2 -2
  78. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-transform-feedback.js +141 -143
  80. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
  81. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-vertex-array.js +229 -157
  83. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  84. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  85. package/dist/adapter/webgl-canvas-context.js +58 -36
  86. package/dist/adapter/webgl-device.d.ts +50 -44
  87. package/dist/adapter/webgl-device.d.ts.map +1 -1
  88. package/dist/adapter/webgl-device.js +427 -352
  89. package/dist/classic/accessor.d.ts.map +1 -1
  90. package/dist/classic/accessor.js +132 -101
  91. package/dist/classic/clear.d.ts +2 -2
  92. package/dist/classic/clear.d.ts.map +1 -1
  93. package/dist/classic/clear.js +73 -72
  94. package/dist/classic/copy-and-blit.d.ts +1 -1
  95. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  96. package/dist/classic/copy-and-blit.js +174 -175
  97. package/dist/classic/format-utils.d.ts +2 -2
  98. package/dist/classic/format-utils.d.ts.map +1 -1
  99. package/dist/classic/format-utils.js +39 -32
  100. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  101. package/dist/classic/typed-array-utils.js +96 -81
  102. package/dist/context/debug/spector.d.ts.map +1 -1
  103. package/dist/context/debug/spector.js +55 -50
  104. package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
  105. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  106. package/dist/context/debug/webgl-developer-tools.js +104 -77
  107. package/dist/context/{context → helpers}/create-browser-context.d.ts +1 -6
  108. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  109. package/dist/context/helpers/create-browser-context.js +67 -0
  110. package/dist/context/{polyfill/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -2
  111. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  112. package/dist/context/helpers/webgl-context-data.js +21 -0
  113. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  114. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  115. package/dist/context/helpers/webgl-extensions.js +10 -0
  116. package/dist/context/parameters/unified-parameter-api.d.ts +3 -4
  117. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  118. package/dist/context/parameters/unified-parameter-api.js +92 -47
  119. package/dist/context/parameters/webgl-parameter-tables.d.ts +109 -99
  120. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  121. package/dist/context/parameters/webgl-parameter-tables.js +463 -404
  122. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  123. package/dist/context/state-tracker/deep-array-equal.js +19 -14
  124. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  125. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  126. package/dist/context/state-tracker/track-context-state.js +188 -123
  127. package/dist/context/state-tracker/with-parameters.d.ts +2 -3
  128. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  129. package/dist/context/state-tracker/with-parameters.js +42 -28
  130. package/dist/dist.dev.js +4465 -7235
  131. package/dist/dist.min.js +10 -0
  132. package/dist/index.cjs +2146 -3116
  133. package/dist/index.cjs.map +7 -0
  134. package/dist/index.d.ts +25 -31
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +19 -10
  137. package/dist/types.d.ts.map +1 -1
  138. package/dist/types.js +3 -1
  139. package/dist.min.js +9 -42
  140. package/package.json +10 -15
  141. package/src/adapter/converters/device-parameters.ts +114 -28
  142. package/src/adapter/converters/sampler-parameters.ts +12 -20
  143. package/src/adapter/converters/shader-formats.ts +47 -22
  144. package/src/adapter/converters/texture-formats.ts +183 -227
  145. package/src/adapter/converters/vertex-formats.ts +3 -3
  146. package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
  147. package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +30 -22
  148. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  149. package/src/adapter/helpers/decode-webgl-types.ts +13 -7
  150. package/src/adapter/helpers/get-shader-layout.ts +21 -31
  151. package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
  152. package/src/adapter/helpers/set-uniform.ts +3 -4
  153. package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
  154. package/src/adapter/objects/constants-to-keys.ts +3 -2
  155. package/src/adapter/objects/webgl-renderbuffer.ts +38 -16
  156. package/src/adapter/objects/webgl-resource.ts +8 -141
  157. package/src/adapter/resources/webgl-buffer.ts +10 -14
  158. package/src/adapter/resources/webgl-command-buffer.ts +24 -34
  159. package/src/adapter/resources/webgl-command-encoder.ts +14 -11
  160. package/src/adapter/resources/webgl-external-texture.ts +7 -7
  161. package/src/adapter/resources/webgl-framebuffer.ts +65 -58
  162. package/src/adapter/resources/webgl-query-set.ts +171 -0
  163. package/src/adapter/resources/webgl-render-pass.ts +27 -18
  164. package/src/adapter/resources/webgl-render-pipeline.ts +148 -73
  165. package/src/adapter/resources/webgl-sampler.ts +7 -10
  166. package/src/adapter/resources/webgl-shader.ts +65 -11
  167. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  168. package/src/adapter/resources/webgl-texture.ts +43 -106
  169. package/src/adapter/resources/webgl-transform-feedback.ts +16 -22
  170. package/src/adapter/resources/webgl-vertex-array.ts +20 -21
  171. package/src/adapter/webgl-canvas-context.ts +7 -11
  172. package/src/adapter/webgl-device.ts +142 -162
  173. package/src/classic/accessor.ts +5 -4
  174. package/src/classic/clear.ts +25 -20
  175. package/src/classic/copy-and-blit.ts +12 -6
  176. package/src/classic/format-utils.ts +2 -1
  177. package/src/classic/typed-array-utils.ts +3 -7
  178. package/src/context/debug/spector.ts +9 -6
  179. package/src/context/debug/webgl-developer-tools.ts +31 -20
  180. package/src/context/{context → helpers}/create-browser-context.ts +9 -33
  181. package/src/context/{polyfill/context-data.ts → helpers/webgl-context-data.ts} +3 -2
  182. package/src/context/helpers/webgl-extensions.ts +17 -0
  183. package/src/context/parameters/unified-parameter-api.ts +6 -17
  184. package/src/context/parameters/webgl-parameter-tables.ts +118 -90
  185. package/src/context/state-tracker/deep-array-equal.ts +2 -1
  186. package/src/context/state-tracker/track-context-state.ts +29 -23
  187. package/src/context/state-tracker/with-parameters.ts +8 -8
  188. package/src/index.ts +16 -56
  189. package/src/types.ts +2 -1
  190. package/dist/adapter/converters/device-parameters.js.map +0 -1
  191. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  192. package/dist/adapter/converters/shader-formats.js.map +0 -1
  193. package/dist/adapter/converters/texture-formats.js.map +0 -1
  194. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  195. package/dist/adapter/device-helpers/device-features.d.ts +0 -9
  196. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  197. package/dist/adapter/device-helpers/device-features.js +0 -96
  198. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  199. package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
  200. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  201. package/dist/adapter/device-helpers/device-limits.js +0 -87
  202. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  203. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  204. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  205. package/dist/adapter/device-helpers/get-device-info.js +0 -71
  206. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  207. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  208. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  209. package/dist/adapter/device-helpers/is-old-ie.js +0 -9
  210. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  211. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  212. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  213. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  214. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  215. package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
  216. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  217. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  218. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  219. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  220. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  221. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  222. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  223. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  224. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  225. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  226. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  227. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  228. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  229. package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
  230. package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
  231. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  232. package/dist/adapter/webgl-device.js.map +0 -1
  233. package/dist/classic/accessor.js.map +0 -1
  234. package/dist/classic/clear.js.map +0 -1
  235. package/dist/classic/copy-and-blit.js.map +0 -1
  236. package/dist/classic/format-utils.js.map +0 -1
  237. package/dist/classic/typed-array-utils.js.map +0 -1
  238. package/dist/context/context/create-browser-context.d.ts.map +0 -1
  239. package/dist/context/context/create-browser-context.js +0 -53
  240. package/dist/context/context/create-browser-context.js.map +0 -1
  241. package/dist/context/context/create-headless-context.d.ts +0 -9
  242. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  243. package/dist/context/context/create-headless-context.js +0 -42
  244. package/dist/context/context/create-headless-context.js.map +0 -1
  245. package/dist/context/context/webgl-checks.d.ts +0 -13
  246. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  247. package/dist/context/context/webgl-checks.js +0 -31
  248. package/dist/context/context/webgl-checks.js.map +0 -1
  249. package/dist/context/debug/spector.js.map +0 -1
  250. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  251. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  252. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  253. package/dist/context/polyfill/context-data.d.ts.map +0 -1
  254. package/dist/context/polyfill/context-data.js +0 -12
  255. package/dist/context/polyfill/context-data.js.map +0 -1
  256. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  257. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  258. package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
  259. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  260. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  261. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  262. package/dist/context/polyfill/polyfill-context.js +0 -87
  263. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  264. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  265. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  266. package/dist/context/polyfill/polyfill-table.js +0 -137
  267. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  268. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  269. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  270. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
  271. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  272. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  273. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  274. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  275. package/dist/index.js.map +0 -1
  276. package/dist/types.js.map +0 -1
  277. package/src/adapter/device-helpers/device-features.ts +0 -161
  278. package/src/adapter/device-helpers/device-limits.ts +0 -155
  279. package/src/adapter/device-helpers/is-old-ie.ts +0 -14
  280. package/src/context/context/create-headless-context.ts +0 -51
  281. package/src/context/context/webgl-checks.ts +0 -51
  282. package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
  283. package/src/context/polyfill/polyfill-context.ts +0 -104
  284. package/src/context/polyfill/polyfill-table.ts +0 -167
  285. 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.
@@ -9,12 +10,13 @@
9
10
  import {
10
11
  Device,
11
12
  TextureProps,
13
+ TextureViewProps,
12
14
  Sampler,
13
15
  SamplerProps,
14
16
  SamplerParameters,
15
17
  TypedArray
16
18
  } from '@luma.gl/core';
17
- import {Texture, log, assert, isPowerOfTwo, loadImage, isObjectEmpty} from '@luma.gl/core';
19
+ import {Texture, log, assert, loadImage, isObjectEmpty} from '@luma.gl/core';
18
20
  import {GL, GLSamplerParameters} from '@luma.gl/constants';
19
21
  import {withGLParameters} from '../../context/state-tracker/with-parameters';
20
22
  import {
@@ -22,13 +24,11 @@ import {
22
24
  getWebGLTextureParameters,
23
25
  getTextureFormatBytesPerPixel
24
26
  } from '../converters/texture-formats';
25
- import {
26
- convertSamplerParametersToWebGL,
27
- updateSamplerParametersForNPOT
28
- } from '../converters/sampler-parameters';
27
+ import {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';
29
28
  import {WebGLDevice} from '../webgl-device';
30
29
  import {WEBGLBuffer} from './webgl-buffer';
31
30
  import {WEBGLSampler} from './webgl-sampler';
31
+ import {WEBGLTextureView} from './webgl-texture-view';
32
32
 
33
33
  export type WEBGLTextureProps = TextureProps & {
34
34
  /** @deprecated use props.sampler */
@@ -151,13 +151,14 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
151
151
 
152
152
  readonly MAX_ATTRIBUTES: number;
153
153
  readonly device: WebGLDevice;
154
- readonly gl: WebGLRenderingContext;
155
- readonly gl2: WebGL2RenderingContext | null;
154
+ readonly gl: WebGL2RenderingContext;
156
155
  readonly handle: WebGLTexture;
157
156
 
158
- /** Sampler object (currently unused) */
157
+ // (TODO - currently unused in WebGL, but WebGL 2 does support sampler objects) */
159
158
  sampler: WEBGLSampler = undefined;
160
159
 
160
+ view: WEBGLTextureView = undefined;
161
+
161
162
  // data;
162
163
 
163
164
  glFormat: GL = undefined;
@@ -194,7 +195,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
194
195
 
195
196
  this.device = device as WebGLDevice;
196
197
  this.gl = this.device.gl;
197
- this.gl2 = this.device.gl2;
198
198
  this.handle = this.props.handle || this.gl.createTexture();
199
199
  this.device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data}); // {name: this.props.id};
200
200
 
@@ -228,6 +228,10 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
228
228
  return `Texture(${this.id},${this.width}x${this.height})`;
229
229
  }
230
230
 
231
+ createView(props: TextureViewProps): WEBGLTextureView {
232
+ return new WEBGLTextureView(this.device, {...props, texture: this});
233
+ }
234
+
231
235
  // eslint-disable-next-line max-statements
232
236
  initialize(props: WEBGLTextureProps = {}): this {
233
237
  // Cube textures
@@ -260,7 +264,7 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
260
264
 
261
265
  const {parameters = {} as Record<GL, any>} = props;
262
266
 
263
- const {pixels = null, pixelStore = {}, textureUnit = undefined} = props;
267
+ const {pixels = null, pixelStore = {}, textureUnit = undefined, mipmaps = true} = props;
264
268
 
265
269
  // pixels variable is for API compatibility purpose
266
270
  if (!data) {
@@ -270,10 +274,10 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
270
274
  data = pixels;
271
275
  }
272
276
 
273
- let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;
277
+ let {width, height, dataFormat, type, compressed = false} = props;
274
278
  const {depth = 0} = props;
275
279
 
276
- const glFormat = convertTextureFormatToGL(props.format, this.device.isWebGL2);
280
+ const glFormat = convertTextureFormatToGL(props.format);
277
281
 
278
282
  // Deduce width and height
279
283
  ({width, height, compressed, dataFormat, type} = this._deduceParameters({
@@ -300,11 +304,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
300
304
  this.gl.bindTexture(this.target, this.handle);
301
305
  }
302
306
 
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
307
  this.mipmaps = mipmaps;
309
308
 
310
309
  this.setImageData({
@@ -324,7 +323,9 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
324
323
  this.setSampler(props.sampler);
325
324
  this._setSamplerParameters(parameters);
326
325
 
327
- if (mipmaps) {
326
+ this.view = this.createView({...this.props, mipLevelCount: 1, arrayLayerCount: 1});
327
+
328
+ if (mipmaps && this.device.isTextureFormatFilterable(props.format)) {
328
329
  this.generateMipmap();
329
330
  }
330
331
 
@@ -372,7 +373,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
372
373
  samplerProps = sampler as SamplerProps;
373
374
  }
374
375
 
375
- // TODO - technically, this is only needed in WebGL1. In WebGL2 we could always use the sampler.
376
376
  const parameters = convertSamplerParametersToWebGL(samplerProps);
377
377
  this._setSamplerParameters(parameters);
378
378
  return this;
@@ -418,11 +418,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
418
418
 
419
419
  // Call to regenerate mipmaps after modifying texture(s)
420
420
  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
421
  this.mipmaps = true;
427
422
 
428
423
  this.gl.bindTexture(this.target, this.handle);
@@ -500,8 +495,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
500
495
  let dataType = null;
501
496
  ({data, dataType} = this._getDataType({data, compressed}));
502
497
 
503
- let gl2;
504
-
505
498
  withGLParameters(this.gl, parameters, () => {
506
499
  switch (dataType) {
507
500
  case 'null':
@@ -518,8 +511,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
518
511
  );
519
512
  break;
520
513
  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
514
  gl.texImage2D(
524
515
  target,
525
516
  level,
@@ -530,15 +521,13 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
530
521
  dataFormat,
531
522
  type,
532
523
  data,
533
- // @ts-expect-error
534
524
  offset
535
525
  );
536
526
  break;
537
527
  case 'buffer':
538
528
  // 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(
529
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);
530
+ this.device.gl.texImage2D(
542
531
  target,
543
532
  level,
544
533
  glFormat,
@@ -549,24 +538,20 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
549
538
  type,
550
539
  offset
551
540
  );
552
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
541
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
553
542
  break;
554
543
  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
- }
544
+ gl.texImage2D(
545
+ target,
546
+ level,
547
+ glFormat,
548
+ width,
549
+ height,
550
+ 0 /* border*/,
551
+ dataFormat,
552
+ type,
553
+ data
554
+ );
570
555
  break;
571
556
  case 'compressed':
572
557
  for (const [levelIndex, levelData] of data.entries()) {
@@ -590,7 +575,7 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
590
575
  if (data && data.byteLength) {
591
576
  this.trackAllocatedMemory(data.byteLength, 'Texture');
592
577
  } else {
593
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
578
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format);
594
579
  this.trackAllocatedMemory(this.width * this.height * bytesPerPixel, 'Texture');
595
580
  }
596
581
 
@@ -659,22 +644,16 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
659
644
  } else if (data === null) {
660
645
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
661
646
  } else if (ArrayBuffer.isView(data)) {
662
- // const gl2 = this.device.assertWebGL2();
663
- // @ts-expect-error last offset parameter is ignored under WebGL1
664
647
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);
665
648
  } else if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
666
649
  // WebGL2 allows us to create texture directly from a WebGL buffer
667
- const gl2 = this.device.assertWebGL2();
668
650
  // 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);
651
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);
652
+ this.device.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);
653
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
676
654
  } else {
677
- this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);
655
+ // Assume data is a browser supported object (ImageData, Canvas, ...)
656
+ this.device.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);
678
657
  }
679
658
  });
680
659
 
@@ -754,7 +733,7 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
754
733
  let {width, height, dataFormat, type, compressed} = opts;
755
734
 
756
735
  // Deduce format and type from format
757
- const parameters = getWebGLTextureParameters(format, this.device.isWebGL2);
736
+ const parameters = getWebGLTextureParameters(format);
758
737
  dataFormat = dataFormat || parameters.dataFormat;
759
738
  type = type || parameters.type;
760
739
  compressed = compressed || parameters.compressed;
@@ -910,11 +889,10 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
910
889
 
911
890
  this.gl.bindTexture(this.target, this.handle);
912
891
 
913
- const webglTextureFormat = getWebGLTextureParameters(format, this.device.isWebGL2);
892
+ const webglTextureFormat = getWebGLTextureParameters(format);
914
893
 
915
894
  withGLParameters(this.gl, parameters, () => {
916
895
  if (ArrayBuffer.isView(data)) {
917
- // @ts-expect-error
918
896
  this.gl.texImage3D(
919
897
  this.target,
920
898
  level,
@@ -931,7 +909,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
931
909
 
932
910
  if (data instanceof WEBGLBuffer) {
933
911
  this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);
934
- // @ts-expect-error
935
912
  this.gl.texImage3D(
936
913
  this.target,
937
914
  level,
@@ -950,7 +927,7 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
950
927
  if (data && data.byteLength) {
951
928
  this.trackAllocatedMemory(data.byteLength, 'Texture');
952
929
  } else {
953
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
930
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format);
954
931
  this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');
955
932
  }
956
933
 
@@ -963,14 +940,8 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
963
940
 
964
941
  /**
965
942
  * Sets sampler parameters on texture
966
- * @note: Applies NPOT workaround if appropriate
967
943
  */
968
944
  _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
945
  // NPOT parameters may populate an empty object
975
946
  if (isObjectEmpty(parameters)) {
976
947
  return;
@@ -999,32 +970,6 @@ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
999
970
  this.gl.bindTexture(this.target, null);
1000
971
  return;
1001
972
  }
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
973
  }
1029
974
 
1030
975
  // HELPERS
@@ -1049,14 +994,6 @@ function getWebGLTextureTarget(props: TextureProps) {
1049
994
  }
1050
995
  }
1051
996
 
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
997
  function logParameters(parameters: Record<number, GL | number>) {
1061
998
  log.log(1, 'texture sampler parameters', parameters)();
1062
999
  }
@@ -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
  }