@luma.gl/webgl 9.0.0-alpha.3 → 9.0.0-alpha.30

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 (500) hide show
  1. package/LICENSE +2 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +14 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +28 -46
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +5 -5
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +20 -56
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/texture-formats.d.ts +31 -42
  11. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  12. package/dist/adapter/converters/texture-formats.js +163 -178
  13. package/dist/adapter/converters/texture-formats.js.map +1 -1
  14. package/dist/adapter/converters/vertex-formats.d.ts +2 -2
  15. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.js +3 -9
  17. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  18. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  20. package/dist/adapter/device-helpers/device-features.js +13 -20
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  23. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-limits.js +2 -5
  25. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  26. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  27. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/get-device-info.js +9 -11
  29. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  30. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  31. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  32. package/dist/adapter/helpers/attribute-utils.d.ts +4 -4
  33. package/dist/adapter/helpers/attribute-utils.d.ts.map +1 -1
  34. package/dist/adapter/helpers/attribute-utils.js +1 -18
  35. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  36. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  37. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  38. package/dist/adapter/helpers/get-shader-info.js +25 -0
  39. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  40. package/dist/adapter/helpers/get-shader-layout.d.ts +10 -7
  41. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  42. package/dist/adapter/helpers/get-shader-layout.js +101 -84
  43. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  44. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  48. package/dist/adapter/helpers/set-uniform.d.ts +2 -2
  49. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  50. package/dist/adapter/helpers/set-uniform.js +3 -33
  51. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  52. package/dist/adapter/helpers/uniforms.d.ts +9 -10
  53. package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
  54. package/dist/adapter/helpers/uniforms.js +8 -18
  55. package/dist/adapter/helpers/uniforms.js.map +1 -1
  56. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  57. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  58. package/dist/adapter/objects/constants-to-keys.js +1 -28
  59. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  60. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  62. package/dist/adapter/objects/webgl-renderbuffer.js +35 -41
  63. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  64. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  65. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  66. package/dist/adapter/objects/webgl-resource.js +19 -75
  67. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  68. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +38 -11
  69. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  70. package/dist/adapter/objects/webgl-vertex-array-object.js +122 -32
  71. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  72. package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
  73. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-buffer.js +43 -71
  75. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  76. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  77. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-command-buffer.js +169 -41
  79. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  80. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  81. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-command-encoder.js +8 -17
  83. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  84. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  85. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  86. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  87. package/dist/adapter/resources/webgl-framebuffer.js +41 -149
  88. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  89. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  90. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-render-pass.js +88 -9
  92. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  93. package/dist/adapter/resources/webgl-render-pipeline.d.ts +44 -11
  94. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  95. package/dist/adapter/resources/webgl-render-pipeline.js +90 -152
  96. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  97. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  98. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  99. package/dist/adapter/resources/webgl-sampler.js +7 -15
  100. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  101. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  102. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  103. package/dist/adapter/resources/webgl-shader.js +9 -22
  104. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  105. package/dist/adapter/resources/webgl-texture.d.ts +64 -44
  106. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  107. package/dist/adapter/resources/webgl-texture.js +98 -213
  108. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  109. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  110. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  111. package/dist/adapter/webgl-canvas-context.js +8 -20
  112. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  113. package/dist/adapter/webgl-device.d.ts +64 -41
  114. package/dist/adapter/webgl-device.d.ts.map +1 -1
  115. package/dist/adapter/webgl-device.js +133 -113
  116. package/dist/adapter/webgl-device.js.map +1 -1
  117. package/dist/classic/accessor.d.ts +3 -3
  118. package/dist/classic/accessor.d.ts.map +1 -1
  119. package/dist/classic/accessor.js +14 -38
  120. package/dist/classic/accessor.js.map +1 -1
  121. package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -28
  122. package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
  123. package/dist/classic/{buffer.js → buffer-with-accessor.js} +54 -122
  124. package/dist/classic/buffer-with-accessor.js.map +1 -0
  125. package/dist/classic/clear.d.ts +22 -0
  126. package/dist/classic/clear.d.ts.map +1 -0
  127. package/dist/classic/clear.js +88 -0
  128. package/dist/classic/clear.js.map +1 -0
  129. package/dist/classic/copy-and-blit.d.ts +62 -0
  130. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  131. package/dist/classic/copy-and-blit.js +202 -0
  132. package/dist/classic/copy-and-blit.js.map +1 -0
  133. package/dist/classic/format-utils.d.ts +3 -0
  134. package/dist/classic/format-utils.d.ts.map +1 -0
  135. package/dist/classic/format-utils.js +38 -0
  136. package/dist/classic/format-utils.js.map +1 -0
  137. package/dist/classic/typed-array-utils.d.ts +15 -17
  138. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  139. package/dist/classic/typed-array-utils.js +1 -21
  140. package/dist/classic/typed-array-utils.js.map +1 -1
  141. package/dist/context/context/create-browser-context.d.ts +40 -0
  142. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  143. package/dist/{esm/context/context/create-context.js → context/context/create-browser-context.js} +23 -19
  144. package/dist/context/context/create-browser-context.js.map +1 -0
  145. package/dist/context/context/create-headless-context.d.ts +9 -0
  146. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  147. package/dist/context/context/create-headless-context.js +42 -0
  148. package/dist/context/context/create-headless-context.js.map +1 -0
  149. package/dist/context/context/webgl-checks.js +1 -4
  150. package/dist/context/context/webgl-checks.js.map +1 -1
  151. package/dist/context/debug/spector.d.ts +1 -2
  152. package/dist/context/debug/spector.d.ts.map +1 -1
  153. package/dist/context/debug/spector.js +8 -20
  154. package/dist/context/debug/spector.js.map +1 -1
  155. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  156. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.js +11 -34
  158. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  159. package/dist/context/parameters/unified-parameter-api.d.ts +8 -7
  160. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.js +8 -18
  162. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  163. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  164. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.js +18 -36
  166. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  167. package/dist/context/polyfill/context-data.d.ts +13 -0
  168. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  169. package/dist/context/polyfill/context-data.js +12 -0
  170. package/dist/context/polyfill/context-data.js.map +1 -0
  171. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  172. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  173. package/dist/context/polyfill/get-parameter-polyfill.js +4 -9
  174. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  175. package/dist/context/polyfill/polyfill-context.js +21 -29
  176. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  178. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  179. package/dist/context/polyfill/polyfill-table.js +10 -32
  180. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  183. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  184. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  185. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  186. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  187. package/dist/context/state-tracker/track-context-state.js +16 -51
  188. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  189. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  190. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  191. package/dist/context/state-tracker/with-parameters.js +7 -9
  192. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  193. package/dist/dist.dev.js +10158 -0
  194. package/dist/index.cjs +6604 -0
  195. package/dist/index.d.ts +25 -22
  196. package/dist/index.d.ts.map +1 -1
  197. package/dist/index.js +27 -26
  198. package/dist/index.js.map +1 -1
  199. package/dist/types.d.ts +1 -1
  200. package/dist/types.d.ts.map +1 -1
  201. package/dist/types.js.map +1 -1
  202. package/dist.min.js +37 -0
  203. package/package.json +21 -9
  204. package/src/adapter/converters/device-parameters.ts +88 -35
  205. package/src/adapter/converters/sampler-parameters.ts +19 -9
  206. package/src/adapter/converters/texture-formats.ts +261 -178
  207. package/src/adapter/converters/vertex-formats.ts +3 -2
  208. package/src/adapter/device-helpers/device-features.ts +10 -3
  209. package/src/adapter/device-helpers/device-limits.ts +3 -3
  210. package/src/adapter/device-helpers/get-device-info.ts +14 -10
  211. package/src/adapter/helpers/attribute-utils.ts +4 -5
  212. package/src/adapter/helpers/get-shader-info.ts +40 -0
  213. package/src/adapter/helpers/get-shader-layout.ts +150 -68
  214. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  215. package/src/adapter/helpers/set-uniform.ts +7 -6
  216. package/src/adapter/helpers/uniforms.ts +23 -13
  217. package/src/adapter/objects/constants-to-keys.ts +3 -25
  218. package/src/adapter/objects/webgl-renderbuffer.ts +40 -37
  219. package/src/adapter/objects/webgl-resource.ts +14 -23
  220. package/src/adapter/objects/webgl-vertex-array-object.ts +201 -37
  221. package/src/adapter/resources/webgl-buffer.ts +56 -58
  222. package/src/adapter/resources/webgl-command-buffer.ts +332 -25
  223. package/src/adapter/resources/webgl-command-encoder.ts +16 -11
  224. package/src/adapter/resources/webgl-external-texture.ts +2 -2
  225. package/src/adapter/resources/webgl-framebuffer.ts +88 -133
  226. package/src/adapter/resources/webgl-render-pass.ts +155 -4
  227. package/src/adapter/resources/webgl-render-pipeline.ts +161 -104
  228. package/src/adapter/resources/webgl-sampler.ts +13 -8
  229. package/src/adapter/resources/webgl-shader.ts +11 -10
  230. package/src/adapter/resources/webgl-texture.ts +113 -85
  231. package/src/adapter/webgl-canvas-context.ts +14 -14
  232. package/src/adapter/webgl-device.ts +192 -77
  233. package/src/classic/accessor.ts +4 -17
  234. package/src/classic/{buffer.ts → buffer-with-accessor.ts} +67 -75
  235. package/src/classic/clear.ts +110 -0
  236. package/src/classic/copy-and-blit.ts +308 -0
  237. package/src/classic/format-utils.ts +43 -0
  238. package/src/classic/typed-array-utils.ts +18 -27
  239. package/src/context/context/{create-context.ts → create-browser-context.ts} +48 -31
  240. package/src/context/context/create-headless-context.ts +48 -0
  241. package/src/context/context/webgl-checks.ts +1 -1
  242. package/src/context/debug/spector.ts +7 -6
  243. package/src/context/debug/webgl-developer-tools.ts +21 -15
  244. package/src/context/parameters/unified-parameter-api.ts +20 -14
  245. package/src/context/parameters/webgl-parameter-tables.ts +117 -98
  246. package/src/context/polyfill/context-data.ts +27 -0
  247. package/src/context/polyfill/get-parameter-polyfill.ts +8 -7
  248. package/src/context/polyfill/polyfill-context.ts +7 -9
  249. package/src/context/polyfill/polyfill-table.ts +18 -16
  250. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  251. package/src/context/state-tracker/track-context-state.ts +14 -13
  252. package/src/context/state-tracker/with-parameters.ts +8 -2
  253. package/src/index.ts +42 -33
  254. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  255. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  256. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  257. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  258. package/dist/bundle.d.ts +0 -2
  259. package/dist/bundle.d.ts.map +0 -1
  260. package/dist/bundle.js +0 -5
  261. package/dist/bundle.js.map +0 -1
  262. package/dist/classic/buffer.d.ts.map +0 -1
  263. package/dist/classic/buffer.js.map +0 -1
  264. package/dist/context/context/context-state.d.ts +0 -18
  265. package/dist/context/context/context-state.d.ts.map +0 -1
  266. package/dist/context/context/context-state.js +0 -26
  267. package/dist/context/context/context-state.js.map +0 -1
  268. package/dist/context/context/create-context.d.ts +0 -41
  269. package/dist/context/context/create-context.d.ts.map +0 -1
  270. package/dist/context/context/create-context.js +0 -49
  271. package/dist/context/context/create-context.js.map +0 -1
  272. package/dist/context/context/device-pixels.d.ts +0 -25
  273. package/dist/context/context/device-pixels.d.ts.map +0 -1
  274. package/dist/context/context/device-pixels.js +0 -98
  275. package/dist/context/context/device-pixels.js.map +0 -1
  276. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  277. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  278. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  279. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  280. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  281. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  282. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  283. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  284. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  285. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  286. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  287. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  288. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  289. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  290. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  291. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  292. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  293. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  294. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  295. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  296. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  297. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  298. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  299. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  300. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  301. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  302. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  303. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  304. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  305. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  306. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  307. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  308. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  309. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  310. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  311. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  312. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  313. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  314. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  315. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  316. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  317. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  318. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  319. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  320. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  321. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  322. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  323. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  324. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  325. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  326. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  327. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  328. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  329. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  330. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  331. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  332. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  333. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  334. package/dist/es5/adapter/webgl-device.js +0 -399
  335. package/dist/es5/adapter/webgl-device.js.map +0 -1
  336. package/dist/es5/bundle.js +0 -7
  337. package/dist/es5/bundle.js.map +0 -1
  338. package/dist/es5/classic/accessor.js +0 -181
  339. package/dist/es5/classic/accessor.js.map +0 -1
  340. package/dist/es5/classic/buffer.js +0 -470
  341. package/dist/es5/classic/buffer.js.map +0 -1
  342. package/dist/es5/classic/typed-array-utils.js +0 -126
  343. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  344. package/dist/es5/context/context/context-state.js +0 -31
  345. package/dist/es5/context/context/context-state.js.map +0 -1
  346. package/dist/es5/context/context/create-context.js +0 -69
  347. package/dist/es5/context/context/create-context.js.map +0 -1
  348. package/dist/es5/context/context/device-pixels.js +0 -115
  349. package/dist/es5/context/context/device-pixels.js.map +0 -1
  350. package/dist/es5/context/context/webgl-checks.js +0 -54
  351. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  352. package/dist/es5/context/debug/spector.js +0 -133
  353. package/dist/es5/context/debug/spector.js.map +0 -1
  354. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  355. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  356. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  357. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  358. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  359. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  360. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  361. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  362. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  363. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  364. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  365. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  366. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  367. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  368. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  369. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  370. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  371. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  372. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  373. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  374. package/dist/es5/index.js +0 -276
  375. package/dist/es5/index.js.map +0 -1
  376. package/dist/es5/init.js +0 -10
  377. package/dist/es5/init.js.map +0 -1
  378. package/dist/es5/types/webgl.js +0 -6
  379. package/dist/es5/types/webgl.js.map +0 -1
  380. package/dist/es5/types.js +0 -2
  381. package/dist/es5/types.js.map +0 -1
  382. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  383. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  384. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  385. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  386. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  387. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  388. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  389. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  390. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  391. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  392. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  393. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  394. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  395. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  396. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  397. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  398. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  399. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  400. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  401. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  402. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  403. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  404. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  405. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  406. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  407. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  408. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  409. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  410. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  411. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  412. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  413. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  414. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  415. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  416. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  417. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  418. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  419. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  420. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  421. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  422. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  423. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  424. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  425. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  426. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  427. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  428. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  429. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  430. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  431. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  432. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  433. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  434. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  435. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  436. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  437. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  438. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  439. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  440. package/dist/esm/adapter/webgl-device.js +0 -280
  441. package/dist/esm/adapter/webgl-device.js.map +0 -1
  442. package/dist/esm/bundle.js +0 -5
  443. package/dist/esm/bundle.js.map +0 -1
  444. package/dist/esm/classic/accessor.js +0 -144
  445. package/dist/esm/classic/accessor.js.map +0 -1
  446. package/dist/esm/classic/buffer.js +0 -384
  447. package/dist/esm/classic/buffer.js.map +0 -1
  448. package/dist/esm/classic/typed-array-utils.js +0 -112
  449. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  450. package/dist/esm/context/context/context-state.js +0 -26
  451. package/dist/esm/context/context/context-state.js.map +0 -1
  452. package/dist/esm/context/context/create-context.js.map +0 -1
  453. package/dist/esm/context/context/device-pixels.js +0 -98
  454. package/dist/esm/context/context/device-pixels.js.map +0 -1
  455. package/dist/esm/context/context/webgl-checks.js +0 -34
  456. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  457. package/dist/esm/context/debug/spector.js +0 -76
  458. package/dist/esm/context/debug/spector.js.map +0 -1
  459. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  460. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  461. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  462. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  463. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  464. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  465. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  466. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  467. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  468. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  469. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  470. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  471. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  472. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  473. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  474. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  475. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  476. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  477. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  478. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  479. package/dist/esm/index.js +0 -27
  480. package/dist/esm/index.js.map +0 -1
  481. package/dist/esm/init.js +0 -4
  482. package/dist/esm/init.js.map +0 -1
  483. package/dist/esm/types/webgl.js +0 -2
  484. package/dist/esm/types/webgl.js.map +0 -1
  485. package/dist/esm/types.js +0 -2
  486. package/dist/esm/types.js.map +0 -1
  487. package/dist/init.d.ts +0 -2
  488. package/dist/init.d.ts.map +0 -1
  489. package/dist/init.js +0 -4
  490. package/dist/init.js.map +0 -1
  491. package/dist/types/webgl.d.ts +0 -144
  492. package/dist/types/webgl.d.ts.map +0 -1
  493. package/dist/types/webgl.js +0 -2
  494. package/dist/types/webgl.js.map +0 -1
  495. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  496. package/src/bundle.ts +0 -4
  497. package/src/context/context/context-state.ts +0 -41
  498. package/src/context/context/device-pixels.ts +0 -152
  499. package/src/init.ts +0 -4
  500. package/src/types/webgl.ts +0 -283
@@ -10,14 +10,14 @@ import {
10
10
  Sampler,
11
11
  SamplerProps,
12
12
  SamplerParameters,
13
+ TypedArray,
13
14
  isObjectEmpty
14
- } from '@luma.gl/api';
15
- import {Texture, cast, log, assert, isPowerOfTwo, loadImage} from '@luma.gl/api';
16
- import GL from '@luma.gl/constants';
17
- import type {WebGLSamplerParameters} from '../../types/webgl';
15
+ } from '@luma.gl/core';
16
+ import {Texture, cast, log, assert, isPowerOfTwo, loadImage} from '@luma.gl/core';
17
+ import {GL, GLSamplerParameters} from '@luma.gl/constants';
18
18
  import {withParameters} from '../../context/state-tracker/with-parameters';
19
19
  import {
20
- getWebGLTextureFormat,
20
+ convertTextureFormatToGL,
21
21
  getWebGLTextureParameters,
22
22
  getTextureFormatBytesPerPixel
23
23
  } from '../converters/texture-formats';
@@ -25,28 +25,63 @@ import {
25
25
  convertSamplerParametersToWebGL,
26
26
  updateSamplerParametersForNPOT
27
27
  } from '../converters/sampler-parameters';
28
- import WebGLDevice from '../webgl-device';
29
- import WEBGLBuffer from './webgl-buffer';
30
- import WEBGLSampler from './webgl-sampler';
28
+ import {WebGLDevice} from '../webgl-device';
29
+ import {WEBGLBuffer} from './webgl-buffer';
30
+ import {WEBGLSampler} from './webgl-sampler';
31
+
32
+ export type WEBGLTextureProps = TextureProps & {
33
+ /** @deprecated use props.sampler */
34
+ parameters?: Record<number, number>;
35
+ /** @deprecated use props.data */
36
+ pixels?: any;
37
+ /** @deprecated use props.format */
38
+ dataFormat?: number | null;
39
+ /** @deprecated rarely supported */
40
+ border?: number;
41
+ /** @deprecated WebGL only. */
42
+ pixelStore?: object;
43
+ /** @deprecated WebGL only. */
44
+ textureUnit?: number;
45
+ /** @deprecated WebGL only. Use dimension. */
46
+ target?: number;
47
+ };
48
+
49
+ export const DEFAULT_WEBGL_TEXTURE_PROPS = {
50
+ // deprecated
51
+ parameters: {},
52
+ pixelStore: {},
53
+ pixels: null,
54
+ border: 0,
55
+ dataFormat: undefined!,
56
+ textureUnit: undefined!,
57
+ target: undefined!,
58
+ };
31
59
 
32
- export type {TextureProps};
60
+ export type TextureSourceData =
61
+ TypedArray |
62
+ ImageData |
63
+ HTMLImageElement |
64
+ HTMLCanvasElement |
65
+ ImageBitmap |
66
+ HTMLVideoElement
67
+ ;
33
68
 
34
69
  type SetImageDataOptions = {
35
70
  target?: number;
36
71
  level?: number;
37
72
  dataFormat?: any;
38
- width: number;
39
- height: number;
73
+ width?: number;
74
+ height?: number;
40
75
  depth?: number;
41
- format: any;
76
+ glFormat?: GL;
42
77
  type?: any;
43
78
  offset?: number;
44
- data: any;
79
+ data: any; // TextureSourceData;
45
80
  compressed?: boolean;
46
81
  parameters?: Record<GL, any>;
47
82
  /** @deprecated */
48
83
  pixels?: any;
49
- };
84
+ }
50
85
 
51
86
  /**
52
87
  * @param {*} pixels, data -
@@ -77,7 +112,7 @@ type SetSubImageDataOptions = {
77
112
  width?: number;
78
113
  height?: number;
79
114
  depth?: number;
80
- format?: any;
115
+ glFormat?: any;
81
116
  type?: any;
82
117
  offset?: number;
83
118
  data: any;
@@ -92,10 +127,10 @@ type SetSubImageDataOptions = {
92
127
  type SetImageData3DOptions = {
93
128
  level?: number;
94
129
  dataFormat?: any;
95
- width: number;
96
- height: number;
130
+ width?: number;
131
+ height?: number;
97
132
  depth?: number;
98
- format: any;
133
+ format?: any;
99
134
  type?: any;
100
135
  offset?: number;
101
136
  data: any;
@@ -104,7 +139,7 @@ type SetImageData3DOptions = {
104
139
 
105
140
 
106
141
  // Polyfill
107
- export default class WEBGLTexture extends Texture {
142
+ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
108
143
  // TODO - remove?
109
144
  static FACES: number[] = [
110
145
  GL.TEXTURE_CUBE_MAP_POSITIVE_X,
@@ -121,13 +156,12 @@ export default class WEBGLTexture extends Texture {
121
156
  readonly gl2: WebGL2RenderingContext | null;
122
157
  readonly handle: WebGLTexture;
123
158
 
124
- data;
159
+ /** Sampler object (currently unused) */
160
+ sampler: WEBGLSampler = undefined;
125
161
 
126
- width: number = undefined;
127
- height: number = undefined;
128
- depth: number = undefined;
162
+ // data;
129
163
 
130
- format: GL = undefined;
164
+ glFormat: GL = undefined;
131
165
  type: GL = undefined;
132
166
  dataFormat: GL = undefined;
133
167
  mipmaps: boolean = undefined;
@@ -144,9 +178,6 @@ export default class WEBGLTexture extends Texture {
144
178
  target: GL;
145
179
  textureUnit: number = undefined;
146
180
 
147
- /** Sampler object (currently unused) */
148
- sampler: WEBGLSampler = undefined;
149
-
150
181
  /**
151
182
  * Program.draw() checks the loaded flag of all textures to avoid
152
183
  * Textures that are still loading from promises
@@ -159,16 +190,16 @@ export default class WEBGLTexture extends Texture {
159
190
  lastTime: number;
160
191
  };
161
192
 
162
- constructor(device: Device, props: TextureProps) {
163
- super(device, {format: GL.RGBA, ...props});
193
+ constructor(device: Device, props: WEBGLTextureProps) {
194
+ super(device, {...DEFAULT_WEBGL_TEXTURE_PROPS, format: 'rgba8unorm', ...props});
164
195
 
165
196
  this.device = cast<WebGLDevice>(device);
166
197
  this.gl = this.device.gl;
167
198
  this.gl2 = this.device.gl2;
168
199
  this.handle = this.props.handle || this.gl.createTexture();
169
- // @ts-expect-error Per SPECTOR docs
170
- this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};
200
+ this.device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data}); // {name: this.props.id};
171
201
 
202
+ this.glFormat = GL.RGBA;
172
203
  this.target = getWebGLTextureTarget(this.props);
173
204
 
174
205
  // Program.draw() checks the loaded flag of all textures
@@ -184,22 +215,22 @@ export default class WEBGLTexture extends Texture {
184
215
  Object.seal(this);
185
216
  }
186
217
 
187
- destroy(): void {
218
+ override destroy(): void {
188
219
  if (this.handle) {
189
220
  this.gl.deleteTexture(this.handle);
190
221
  this.removeStats();
191
222
  this.trackDeallocatedMemory('Texture');
192
- // @ts-expect-error
193
- this.handle = null;
223
+ // this.handle = null;
224
+ this.destroyed = true;
194
225
  }
195
226
  }
196
227
 
197
- toString(): string {
228
+ override toString(): string {
198
229
  return `Texture(${this.id},${this.width}x${this.height})`;
199
230
  }
200
231
 
201
232
  // eslint-disable-next-line max-statements
202
- initialize(props: TextureProps = {}): this {
233
+ initialize(props: WEBGLTextureProps = {}): this {
203
234
  // Cube textures
204
235
  if (this.props.dimension === 'cube') {
205
236
  return this.initializeCube(props);
@@ -228,10 +259,10 @@ export default class WEBGLTexture extends Texture {
228
259
  return this;
229
260
  }
230
261
 
231
- let {parameters = {} as Record<GL, any>} = props;
262
+ const {parameters = {} as Record<GL, any>} = props;
232
263
 
233
264
  const {
234
- pixels = null, recreate = false, pixelStore = {}, textureUnit = undefined} = props;
265
+ pixels = null, pixelStore = {}, textureUnit = undefined} = props;
235
266
 
236
267
  // pixels variable is for API compatibility purpose
237
268
  if (!data) {
@@ -244,6 +275,8 @@ export default class WEBGLTexture extends Texture {
244
275
  let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;
245
276
  const {depth = 0} = props;
246
277
 
278
+ const glFormat = convertTextureFormatToGL(props.format, this.device.isWebGL2);
279
+
247
280
  // Deduce width and height
248
281
  ({width, height, compressed, dataFormat, type} = this._deduceParameters({
249
282
  format: props.format,
@@ -255,13 +288,11 @@ export default class WEBGLTexture extends Texture {
255
288
  height
256
289
  }));
257
290
 
258
- const format = getWebGLTextureFormat(this.gl, props.format);
259
-
260
291
  // Store opts for accessors
261
292
  this.width = width;
262
293
  this.height = height;
263
- this.depth = depth;
264
- this.format = format;
294
+ // this.depth = depth;
295
+ this.glFormat = glFormat;
265
296
  this.type = type;
266
297
  this.dataFormat = dataFormat;
267
298
  this.textureUnit = textureUnit;
@@ -283,7 +314,7 @@ export default class WEBGLTexture extends Texture {
283
314
  width,
284
315
  height,
285
316
  depth,
286
- format,
317
+ format: glFormat,
287
318
  type,
288
319
  dataFormat,
289
320
  // @ts-expect-error
@@ -299,10 +330,6 @@ export default class WEBGLTexture extends Texture {
299
330
  this.generateMipmap();
300
331
  }
301
332
 
302
- // TODO - Store data to enable auto recreate on context loss
303
- if (recreate) {
304
- this.data = data;
305
- }
306
333
  if (isVideo) {
307
334
  this._video = {
308
335
  video: data as HTMLVideoElement,
@@ -315,7 +342,7 @@ export default class WEBGLTexture extends Texture {
315
342
  return this;
316
343
  }
317
344
 
318
- initializeCube(props?: TextureProps): this {
345
+ initializeCube(props?: WEBGLTextureProps): this {
319
346
  const {mipmaps = true, parameters = {} as Record<GL, any>} = props;
320
347
 
321
348
  // Store props for accessors
@@ -357,7 +384,8 @@ export default class WEBGLTexture extends Texture {
357
384
  * If size has changed, reinitializes with current format
358
385
  * @note note clears image and mipmaps
359
386
  */
360
- resize({height, width, mipmaps = false}): this {
387
+ resize(options: {height: number, width: number, mipmaps?: boolean}): this {
388
+ const {height, width, mipmaps = false} = options;
361
389
  if (width !== this.width || height !== this.height) {
362
390
  return this.initialize({
363
391
  width,
@@ -372,7 +400,7 @@ export default class WEBGLTexture extends Texture {
372
400
  }
373
401
 
374
402
  /** Update external texture (video frame) */
375
- update(): this {
403
+ update(): void {
376
404
  if (this._video) {
377
405
  const {video, parameters, lastTime} = this._video;
378
406
  // @ts-expect-error
@@ -429,7 +457,7 @@ export default class WEBGLTexture extends Texture {
429
457
  */
430
458
  // eslint-disable-next-line max-statements, complexity
431
459
  setImageData(options: SetImageDataOptions) {
432
- if (this.props.dimension === '3d') {
460
+ if (this.props.dimension === '3d' || this.props.dimension === '2d-array') {
433
461
  return this.setImageData3D(options);
434
462
  }
435
463
 
@@ -439,7 +467,7 @@ export default class WEBGLTexture extends Texture {
439
467
  target = this.target,
440
468
  pixels = null,
441
469
  level = 0,
442
- format = this.format,
470
+ glFormat = this.glFormat,
443
471
  offset = 0,
444
472
  parameters = {} as Record<GL, any>
445
473
  } = options;
@@ -479,7 +507,7 @@ export default class WEBGLTexture extends Texture {
479
507
  withParameters(this.gl, parameters, () => {
480
508
  switch (dataType) {
481
509
  case 'null':
482
- gl.texImage2D(target, level, format, width, height, 0 /*border*/, dataFormat, type, data);
510
+ gl.texImage2D(target, level, glFormat, width, height, 0 /* border*/, dataFormat, type, data);
483
511
  break;
484
512
  case 'typed-array':
485
513
  // Looks like this assert is not necessary, as offset is ignored under WebGL1
@@ -487,7 +515,7 @@ export default class WEBGLTexture extends Texture {
487
515
  gl.texImage2D(
488
516
  target,
489
517
  level,
490
- format,
518
+ glFormat,
491
519
  width,
492
520
  height,
493
521
  0, // border (must be 0)
@@ -505,10 +533,10 @@ export default class WEBGLTexture extends Texture {
505
533
  gl2.texImage2D(
506
534
  target,
507
535
  level,
508
- format,
536
+ glFormat,
509
537
  width,
510
538
  height,
511
- 0 /*border*/,
539
+ 0 /* border*/,
512
540
  dataFormat,
513
541
  type,
514
542
  offset
@@ -520,16 +548,16 @@ export default class WEBGLTexture extends Texture {
520
548
  gl.texImage2D(
521
549
  target,
522
550
  level,
523
- format,
551
+ glFormat,
524
552
  width,
525
553
  height,
526
- 0 /*border*/,
554
+ 0 /* border*/,
527
555
  dataFormat,
528
556
  type,
529
557
  data
530
558
  );
531
559
  } else {
532
- gl.texImage2D(target, level, format, dataFormat, type, data);
560
+ gl.texImage2D(target, level, glFormat, dataFormat, type, data);
533
561
  }
534
562
  break;
535
563
  case 'compressed':
@@ -554,7 +582,7 @@ export default class WEBGLTexture extends Texture {
554
582
  if (data && data.byteLength) {
555
583
  this.trackAllocatedMemory(data.byteLength, 'Texture');
556
584
  } else {
557
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
585
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
558
586
  this.trackAllocatedMemory(this.width * this.height * bytesPerPixel, 'Texture');
559
587
  }
560
588
 
@@ -577,7 +605,7 @@ export default class WEBGLTexture extends Texture {
577
605
  width = this.width,
578
606
  height = this.height,
579
607
  level = 0,
580
- format = this.format,
608
+ glFormat = this.glFormat,
581
609
  type = this.type,
582
610
  dataFormat = this.dataFormat,
583
611
  compressed = false,
@@ -619,7 +647,7 @@ export default class WEBGLTexture extends Texture {
619
647
  withParameters(this.gl, parameters, () => {
620
648
  // TODO - x,y parameters
621
649
  if (compressed) {
622
- this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);
650
+ this.gl.compressedTexSubImage2D(target, level, x, y, width, height, glFormat, data);
623
651
  } else if (data === null) {
624
652
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
625
653
  } else if (ArrayBuffer.isView(data)) {
@@ -713,12 +741,12 @@ export default class WEBGLTexture extends Texture {
713
741
 
714
742
  // HELPER METHODS
715
743
 
716
- _deduceParameters(opts) {
744
+ _deduceParameters(opts: WEBGLTextureProps) {
717
745
  const {format, data} = opts;
718
746
  let {width, height, dataFormat, type, compressed} = opts;
719
747
 
720
748
  // Deduce format and type from format
721
- const parameters = getWebGLTextureParameters(this.gl, format);
749
+ const parameters = getWebGLTextureParameters(format, this.device.isWebGL2);
722
750
  dataFormat = dataFormat || parameters.dataFormat;
723
751
  type = type || parameters.type;
724
752
  compressed = compressed || parameters.compressed;
@@ -808,7 +836,7 @@ export default class WEBGLTexture extends Texture {
808
836
  resolvedFaces[index].forEach((image, lodLevel) => {
809
837
  // TODO: adjust width & height for LOD!
810
838
  if (width && height) {
811
- gl.texImage2D(face, lodLevel, format, width, height, 0 /*border*/, format, type, image);
839
+ gl.texImage2D(face, lodLevel, format, width, height, 0 /* border*/, format, type, image);
812
840
  } else {
813
841
  gl.texImage2D(face, lodLevel, format, format, type, image);
814
842
  }
@@ -847,7 +875,7 @@ export default class WEBGLTexture extends Texture {
847
875
  )
848
876
  );
849
877
  } else if (this.width || this.height) {
850
- gl.texImage2D(face, 0, format, width, height, 0 /*border*/, format, type, imageData);
878
+ gl.texImage2D(face, 0, format, width, height, 0 /* border*/, format, type, imageData);
851
879
  } else {
852
880
  gl.texImage2D(face, 0, format, format, type, imageData);
853
881
  }
@@ -856,23 +884,25 @@ export default class WEBGLTexture extends Texture {
856
884
  }
857
885
 
858
886
  /** Image 3D copies from Typed Array or WebGLBuffer */
859
- setImageData3D({
860
- level = 0,
861
- dataFormat,
862
- format,
863
- type, // = GL.UNSIGNED_BYTE,
864
- width,
865
- height,
866
- depth = 1,
867
- offset = 0,
868
- data,
869
- parameters = {} as Record<GL, any> as Record<GL, any>
870
- }: SetImageData3DOptions) {
887
+ setImageData3D(options: SetImageData3DOptions) {
888
+ const {
889
+ level = 0,
890
+ dataFormat,
891
+ format,
892
+ type, // = GL.UNSIGNED_BYTE,
893
+ width,
894
+ height,
895
+ depth = 1,
896
+ offset = 0,
897
+ data,
898
+ parameters = {}
899
+ } = options;
900
+
871
901
  this.trackDeallocatedMemory('Texture');
872
902
 
873
903
  this.gl.bindTexture(this.target, this.handle);
874
904
 
875
- const webglTextureFormat = getWebGLTextureParameters(this.gl, format);
905
+ const webglTextureFormat = getWebGLTextureParameters(format, this.device.isWebGL2);
876
906
 
877
907
  withParameters(this.gl, parameters, () => {
878
908
  if (ArrayBuffer.isView(data)) {
@@ -912,7 +942,7 @@ export default class WEBGLTexture extends Texture {
912
942
  if (data && data.byteLength) {
913
943
  this.trackAllocatedMemory(data.byteLength, 'Texture');
914
944
  } else {
915
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
945
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
916
946
  this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');
917
947
  }
918
948
 
@@ -927,7 +957,7 @@ export default class WEBGLTexture extends Texture {
927
957
  * Sets sampler parameters on texture
928
958
  * @note: Applies NPOT workaround if appropriate
929
959
  */
930
- _setSamplerParameters(parameters: WebGLSamplerParameters) {
960
+ _setSamplerParameters(parameters: GLSamplerParameters): void {
931
961
  // Work around WebGL1 sampling restrictions on NPOT textures
932
962
  if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
933
963
  parameters = updateSamplerParametersForNPOT(parameters);
@@ -943,7 +973,7 @@ export default class WEBGLTexture extends Texture {
943
973
  this.gl.bindTexture(this.target, this.handle);
944
974
  for (const [pname, pvalue] of Object.entries(parameters)) {
945
975
  const param = Number(pname);
946
- let value = pvalue;
976
+ const value = pvalue;
947
977
 
948
978
  // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
949
979
  // For now, pick the float version for parameters specified as GLfloat.
@@ -959,7 +989,7 @@ export default class WEBGLTexture extends Texture {
959
989
  }
960
990
  }
961
991
  this.gl.bindTexture(this.target, null);
962
- return this;
992
+ return;
963
993
  }
964
994
 
965
995
  /** @deprecated For LegacyTexture subclass */
@@ -1018,6 +1048,4 @@ function isNPOT(width: number, height: number): boolean {
1018
1048
 
1019
1049
  function logParameters(parameters: Record<number, GL | number>) {
1020
1050
  log.log(1, 'texture sampler parameters', parameters)();
1021
- for (const [pname, pvalue] of Object.entries(parameters)) {
1022
- }
1023
1051
  }
@@ -1,29 +1,29 @@
1
1
  // luma.gl, MIT license
2
- import type {CanvasContextProps} from '@luma.gl/api';
3
- import {CanvasContext} from '@luma.gl/api';
4
- import {getDevicePixelRatio, setDevicePixelRatio} from '../context/context/device-pixels';
5
- import WebGLDevice from './webgl-device';
6
- import WEBGLFramebuffer from './resources/webgl-framebuffer';
2
+ import type {CanvasContextProps} from '@luma.gl/core';
3
+ import {CanvasContext} from '@luma.gl/core';
4
+ import {WebGLDevice} from './webgl-device';
5
+ import {WEBGLFramebuffer} from './resources/webgl-framebuffer';
7
6
 
8
7
  /**
9
- * Holds a WebGL Canvas Context which will handle drawing buffer resizing etc
10
- * @todo This class is WIP, intended to replace the old gltools-based context size tracking
8
+ * A WebGL Canvas Context which manages the canvas and handles drawing buffer resizing etc
11
9
  */
12
- export default class WebGLCanvasContext extends CanvasContext {
10
+ export class WebGLCanvasContext extends CanvasContext {
13
11
  readonly device: WebGLDevice;
14
12
  presentationSize: [number, number];
15
- private _framebuffer: WEBGLFramebuffer;
13
+ private _framebuffer: WEBGLFramebuffer | null = null;
16
14
 
17
15
  constructor(device: WebGLDevice, props: CanvasContextProps) {
18
16
  // Note: Base class creates / looks up the canvas (unless under Node.js)
19
17
  super(props);
20
18
  this.device = device;
21
19
  this.presentationSize = [-1, -1];
20
+ this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
22
21
  this.update();
23
22
  }
24
23
 
25
24
  getCurrentFramebuffer(): WEBGLFramebuffer {
26
25
  this.update();
26
+ // Setting handle to null returns a reference to the default framebuffer
27
27
  this._framebuffer = this._framebuffer || new WEBGLFramebuffer(this.device, {handle: null});
28
28
  return this._framebuffer;
29
29
  }
@@ -49,23 +49,23 @@ export default class WebGLCanvasContext extends CanvasContext {
49
49
  * canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio
50
50
  * See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
51
51
  */
52
- resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {
52
+ resize(options?: {width?: number; height?: number; useDevicePixels?: boolean | number}): void {
53
53
  // Resize browser context .
54
54
  if (this.canvas) {
55
- const devicePixelRatio = getDevicePixelRatio(options?.useDevicePixels);
56
- setDevicePixelRatio(this.device.gl, devicePixelRatio, options);
55
+ const devicePixelRatio = this.getDevicePixelRatio(options?.useDevicePixels);
56
+ this.setDevicePixelRatio(devicePixelRatio, options);
57
57
  return;
58
58
  }
59
59
 
60
60
  // Resize headless gl context
61
61
  const ext = this.device.gl.getExtension('STACKGL_resize_drawingbuffer');
62
- if (ext && options && `width` in options && `height` in options) {
62
+ if (ext && options && 'width' in options && 'height' in options) {
63
63
  ext.resize(options.width, options.height);
64
64
  }
65
65
  }
66
66
 
67
67
  commit() {
68
- // gl.commit was ultimately removed from standard??
68
+ // gl.commit was ultimately removed from the WebGL standard??
69
69
  // if (this.offScreen && this.gl.commit) {
70
70
  // // @ts-expect-error gl.commit is not officially part of WebGLRenderingContext
71
71
  // this.gl.commit();