@luma.gl/webgl 9.0.0-alpha.5 → 9.0.0-alpha.51

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 (527) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +23 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +101 -73
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +6 -6
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +74 -111
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +309 -346
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +17 -23
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +31 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  42. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  43. package/dist/adapter/helpers/get-shader-layout.js +87 -143
  44. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  48. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  50. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  51. package/dist/adapter/helpers/set-uniform.js +51 -82
  52. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  54. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  55. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  56. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  57. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  58. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  59. package/dist/adapter/objects/constants-to-keys.js +2 -29
  60. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  62. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  63. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  64. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  65. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  66. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-resource.js +26 -83
  68. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  69. package/dist/adapter/resources/webgl-buffer.d.ts +19 -11
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +60 -88
  72. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  74. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  76. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  78. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  80. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  81. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  82. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -173
  85. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  86. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  87. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-render-pass.js +99 -11
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -21
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +108 -270
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  95. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-sampler.js +11 -21
  97. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  98. package/dist/adapter/resources/webgl-shader.d.ts +5 -5
  99. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-shader.js +18 -43
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +62 -42
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +137 -256
  105. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  106. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  107. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  108. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  109. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +10 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +76 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +219 -129
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +26 -52
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/clear.d.ts +22 -0
  127. package/dist/classic/clear.d.ts.map +1 -0
  128. package/dist/classic/clear.js +88 -0
  129. package/dist/classic/clear.js.map +1 -0
  130. package/dist/classic/copy-and-blit.d.ts +62 -0
  131. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  132. package/dist/classic/copy-and-blit.js +191 -0
  133. package/dist/classic/copy-and-blit.js.map +1 -0
  134. package/dist/classic/format-utils.d.ts +3 -0
  135. package/dist/classic/format-utils.d.ts.map +1 -0
  136. package/dist/classic/format-utils.js +37 -0
  137. package/dist/classic/format-utils.js.map +1 -0
  138. package/dist/classic/typed-array-utils.d.ts +17 -17
  139. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  140. package/dist/classic/typed-array-utils.js +18 -39
  141. package/dist/classic/typed-array-utils.js.map +1 -1
  142. package/dist/context/context/create-browser-context.d.ts +40 -0
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  144. package/dist/context/context/create-browser-context.js +53 -0
  145. package/dist/context/context/create-browser-context.js.map +1 -0
  146. package/dist/context/context/create-headless-context.d.ts +9 -0
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  148. package/dist/context/context/create-headless-context.js +42 -0
  149. package/dist/context/context/create-headless-context.js.map +1 -0
  150. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  151. package/dist/context/context/webgl-checks.js +1 -4
  152. package/dist/context/context/webgl-checks.js.map +1 -1
  153. package/dist/context/debug/spector.d.ts +1 -2
  154. package/dist/context/debug/spector.d.ts.map +1 -1
  155. package/dist/context/debug/spector.js +8 -20
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +15 -39
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -19
  164. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  166. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  168. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  169. package/dist/context/polyfill/context-data.d.ts +13 -0
  170. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  171. package/dist/context/polyfill/context-data.js +12 -0
  172. package/dist/context/polyfill/context-data.js.map +1 -0
  173. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  174. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  175. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  176. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  178. package/dist/context/polyfill/polyfill-context.js +22 -30
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +18 -41
  183. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  187. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +26 -62
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +8 -10
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +8624 -0
  198. package/dist/index.cjs +6570 -0
  199. package/dist/index.d.ts +26 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -26
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +52 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +144 -41
  209. package/src/adapter/converters/sampler-parameters.ts +103 -41
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +268 -195
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +14 -3
  214. package/src/adapter/device-helpers/device-limits.ts +5 -3
  215. package/src/adapter/device-helpers/get-device-info.ts +53 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  218. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  220. package/src/adapter/helpers/set-uniform.ts +39 -35
  221. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  222. package/src/adapter/objects/constants-to-keys.ts +6 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  224. package/src/adapter/objects/webgl-resource.ts +16 -23
  225. package/src/adapter/resources/.webgl-render-pipeline.ts.swp +0 -0
  226. package/src/adapter/resources/webgl-buffer.ts +67 -62
  227. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  228. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  229. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  230. package/src/adapter/resources/webgl-framebuffer.ts +90 -134
  231. package/src/adapter/resources/webgl-render-pass.ts +166 -4
  232. package/src/adapter/resources/webgl-render-pipeline.ts +256 -192
  233. package/src/adapter/resources/webgl-sampler.ts +16 -10
  234. package/src/adapter/resources/webgl-shader.ts +33 -27
  235. package/src/adapter/resources/webgl-texture.ts +138 -99
  236. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  237. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  238. package/src/adapter/webgl-canvas-context.ts +16 -14
  239. package/src/adapter/webgl-device.ts +328 -79
  240. package/src/classic/accessor.ts +8 -18
  241. package/src/classic/clear.ts +113 -0
  242. package/src/classic/copy-and-blit.ts +311 -0
  243. package/src/classic/format-utils.ts +46 -0
  244. package/src/classic/typed-array-utils.ts +21 -27
  245. package/src/context/context/create-browser-context.ts +140 -0
  246. package/src/context/context/create-headless-context.ts +51 -0
  247. package/src/context/context/webgl-checks.ts +3 -1
  248. package/src/context/debug/spector.ts +9 -6
  249. package/src/context/debug/webgl-developer-tools.ts +23 -15
  250. package/src/context/parameters/unified-parameter-api.ts +23 -14
  251. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  252. package/src/context/polyfill/context-data.ts +30 -0
  253. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  254. package/src/context/polyfill/polyfill-context.ts +10 -9
  255. package/src/context/polyfill/polyfill-table.ts +21 -16
  256. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  257. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  258. package/src/context/state-tracker/track-context-state.ts +14 -11
  259. package/src/context/state-tracker/with-parameters.ts +13 -4
  260. package/src/index.ts +70 -35
  261. package/src/types.ts +5 -0
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  263. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  264. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  265. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  266. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  267. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  268. package/dist/adapter/helpers/attribute-utils.js +0 -81
  269. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  270. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  271. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  272. package/dist/adapter/helpers/uniforms.js +0 -99
  273. package/dist/adapter/helpers/uniforms.js.map +0 -1
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  275. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  276. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  277. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  278. package/dist/bundle.d.ts +0 -2
  279. package/dist/bundle.d.ts.map +0 -1
  280. package/dist/bundle.js +0 -5
  281. package/dist/bundle.js.map +0 -1
  282. package/dist/classic/buffer.d.ts +0 -95
  283. package/dist/classic/buffer.d.ts.map +0 -1
  284. package/dist/classic/buffer.js +0 -384
  285. package/dist/classic/buffer.js.map +0 -1
  286. package/dist/context/context/context-state.d.ts +0 -18
  287. package/dist/context/context/context-state.d.ts.map +0 -1
  288. package/dist/context/context/context-state.js +0 -26
  289. package/dist/context/context/context-state.js.map +0 -1
  290. package/dist/context/context/create-context.d.ts +0 -41
  291. package/dist/context/context/create-context.d.ts.map +0 -1
  292. package/dist/context/context/create-context.js +0 -49
  293. package/dist/context/context/create-context.js.map +0 -1
  294. package/dist/context/context/device-pixels.d.ts +0 -25
  295. package/dist/context/context/device-pixels.d.ts.map +0 -1
  296. package/dist/context/context/device-pixels.js +0 -98
  297. package/dist/context/context/device-pixels.js.map +0 -1
  298. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  299. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  300. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  301. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  302. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  303. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  304. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  305. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  306. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  307. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  308. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  309. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  310. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  311. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  312. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  313. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  314. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  315. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  316. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  317. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  318. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  319. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  320. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  321. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  322. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  323. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  324. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  325. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  326. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  327. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  328. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  329. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  330. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  331. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  333. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  334. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  335. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  336. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  337. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  339. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  341. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  343. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  345. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  347. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  349. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  351. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  353. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  354. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  355. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  356. package/dist/es5/adapter/webgl-device.js +0 -399
  357. package/dist/es5/adapter/webgl-device.js.map +0 -1
  358. package/dist/es5/bundle.js +0 -7
  359. package/dist/es5/bundle.js.map +0 -1
  360. package/dist/es5/classic/accessor.js +0 -181
  361. package/dist/es5/classic/accessor.js.map +0 -1
  362. package/dist/es5/classic/buffer.js +0 -470
  363. package/dist/es5/classic/buffer.js.map +0 -1
  364. package/dist/es5/classic/typed-array-utils.js +0 -126
  365. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  366. package/dist/es5/context/context/context-state.js +0 -31
  367. package/dist/es5/context/context/context-state.js.map +0 -1
  368. package/dist/es5/context/context/create-context.js +0 -69
  369. package/dist/es5/context/context/create-context.js.map +0 -1
  370. package/dist/es5/context/context/device-pixels.js +0 -115
  371. package/dist/es5/context/context/device-pixels.js.map +0 -1
  372. package/dist/es5/context/context/webgl-checks.js +0 -54
  373. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  374. package/dist/es5/context/debug/spector.js +0 -133
  375. package/dist/es5/context/debug/spector.js.map +0 -1
  376. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  377. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  378. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  379. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  380. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  381. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  382. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  383. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  384. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  385. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  386. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  387. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  388. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  389. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  390. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  391. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  392. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  393. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  394. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  395. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  396. package/dist/es5/index.js +0 -276
  397. package/dist/es5/index.js.map +0 -1
  398. package/dist/es5/init.js +0 -10
  399. package/dist/es5/init.js.map +0 -1
  400. package/dist/es5/types/webgl.js +0 -6
  401. package/dist/es5/types/webgl.js.map +0 -1
  402. package/dist/es5/types.js +0 -2
  403. package/dist/es5/types.js.map +0 -1
  404. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  405. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  406. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  407. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  408. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  409. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  410. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  411. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  412. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  413. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  414. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  415. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  416. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  417. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  418. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  419. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  420. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  421. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  422. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  423. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  424. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  425. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  426. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  427. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  428. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  429. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  430. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  431. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  432. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  433. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  434. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  435. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  436. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  437. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  438. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  439. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  440. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  441. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  442. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  443. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  445. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  447. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  449. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  450. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  451. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  453. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  455. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  457. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-texture.js +0 -833
  459. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  460. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  461. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  462. package/dist/esm/adapter/webgl-device.js +0 -280
  463. package/dist/esm/adapter/webgl-device.js.map +0 -1
  464. package/dist/esm/bundle.js +0 -5
  465. package/dist/esm/bundle.js.map +0 -1
  466. package/dist/esm/classic/accessor.js +0 -144
  467. package/dist/esm/classic/accessor.js.map +0 -1
  468. package/dist/esm/classic/buffer.js +0 -384
  469. package/dist/esm/classic/buffer.js.map +0 -1
  470. package/dist/esm/classic/typed-array-utils.js +0 -112
  471. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  472. package/dist/esm/context/context/context-state.js +0 -26
  473. package/dist/esm/context/context/context-state.js.map +0 -1
  474. package/dist/esm/context/context/create-context.js +0 -49
  475. package/dist/esm/context/context/create-context.js.map +0 -1
  476. package/dist/esm/context/context/device-pixels.js +0 -98
  477. package/dist/esm/context/context/device-pixels.js.map +0 -1
  478. package/dist/esm/context/context/webgl-checks.js +0 -34
  479. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  480. package/dist/esm/context/debug/spector.js +0 -76
  481. package/dist/esm/context/debug/spector.js.map +0 -1
  482. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  483. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  484. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  485. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  487. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  489. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  490. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  491. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  492. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  493. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  495. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  496. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  497. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  498. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  499. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  500. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  501. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  502. package/dist/esm/index.js +0 -27
  503. package/dist/esm/index.js.map +0 -1
  504. package/dist/esm/init.js +0 -4
  505. package/dist/esm/init.js.map +0 -1
  506. package/dist/esm/types/webgl.js +0 -2
  507. package/dist/esm/types/webgl.js.map +0 -1
  508. package/dist/esm/types.js +0 -2
  509. package/dist/esm/types.js.map +0 -1
  510. package/dist/init.d.ts +0 -2
  511. package/dist/init.d.ts.map +0 -1
  512. package/dist/init.js +0 -4
  513. package/dist/init.js.map +0 -1
  514. package/dist/types/webgl.d.ts +0 -145
  515. package/dist/types/webgl.d.ts.map +0 -1
  516. package/dist/types/webgl.js +0 -2
  517. package/dist/types/webgl.js.map +0 -1
  518. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  519. package/src/adapter/helpers/attribute-utils.ts +0 -61
  520. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  521. package/src/bundle.ts +0 -4
  522. package/src/classic/buffer.ts +0 -474
  523. package/src/context/context/context-state.ts +0 -41
  524. package/src/context/context/create-context.ts +0 -110
  525. package/src/context/context/device-pixels.ts +0 -152
  526. package/src/init.ts +0 -4
  527. package/src/types/webgl.ts +0 -284
@@ -1,4 +1,6 @@
1
1
  // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
2
4
  // Texture class.
3
5
  // @todo
4
6
  // - [ ] cube texture init params
@@ -10,14 +12,14 @@ import {
10
12
  Sampler,
11
13
  SamplerProps,
12
14
  SamplerParameters,
15
+ TypedArray,
13
16
  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';
18
- import {withParameters} from '../../context/state-tracker/with-parameters';
17
+ } from '@luma.gl/core';
18
+ import {Texture, cast, log, assert, isPowerOfTwo, loadImage} from '@luma.gl/core';
19
+ import {GL, GLSamplerParameters} from '@luma.gl/constants';
20
+ import {withGLParameters} from '../../context/state-tracker/with-parameters';
19
21
  import {
20
- getWebGLTextureFormat,
22
+ convertTextureFormatToGL,
21
23
  getWebGLTextureParameters,
22
24
  getTextureFormatBytesPerPixel
23
25
  } from '../converters/texture-formats';
@@ -25,23 +27,57 @@ import {
25
27
  convertSamplerParametersToWebGL,
26
28
  updateSamplerParametersForNPOT
27
29
  } from '../converters/sampler-parameters';
28
- import WebGLDevice from '../webgl-device';
29
- import WEBGLBuffer from './webgl-buffer';
30
- import WEBGLSampler from './webgl-sampler';
30
+ import {WebGLDevice} from '../webgl-device';
31
+ import {WEBGLBuffer} from './webgl-buffer';
32
+ import {WEBGLSampler} from './webgl-sampler';
33
+
34
+ export type WEBGLTextureProps = TextureProps & {
35
+ /** @deprecated use props.sampler */
36
+ parameters?: Record<number, number>;
37
+ /** @deprecated use props.data */
38
+ pixels?: any;
39
+ /** @deprecated use props.format */
40
+ dataFormat?: number | null;
41
+ /** @deprecated rarely supported */
42
+ border?: number;
43
+ /** @deprecated WebGL only. */
44
+ pixelStore?: object;
45
+ /** @deprecated WebGL only. */
46
+ textureUnit?: number;
47
+ /** @deprecated WebGL only. Use dimension. */
48
+ target?: number;
49
+ };
50
+
51
+ export const DEFAULT_WEBGL_TEXTURE_PROPS = {
52
+ // deprecated
53
+ parameters: {},
54
+ pixelStore: {},
55
+ pixels: null,
56
+ border: 0,
57
+ dataFormat: undefined!,
58
+ textureUnit: undefined!,
59
+ target: undefined!
60
+ };
31
61
 
32
- export type {TextureProps};
62
+ export type TextureSourceData =
63
+ | TypedArray
64
+ | ImageData
65
+ | HTMLImageElement
66
+ | HTMLCanvasElement
67
+ | ImageBitmap
68
+ | HTMLVideoElement;
33
69
 
34
70
  type SetImageDataOptions = {
35
71
  target?: number;
36
72
  level?: number;
37
73
  dataFormat?: any;
38
- width: number;
39
- height: number;
74
+ width?: number;
75
+ height?: number;
40
76
  depth?: number;
41
- format: any;
77
+ glFormat?: GL;
42
78
  type?: any;
43
79
  offset?: number;
44
- data: any;
80
+ data: any; // TextureSourceData;
45
81
  compressed?: boolean;
46
82
  parameters?: Record<GL, any>;
47
83
  /** @deprecated */
@@ -77,7 +113,7 @@ type SetSubImageDataOptions = {
77
113
  width?: number;
78
114
  height?: number;
79
115
  depth?: number;
80
- format?: any;
116
+ glFormat?: any;
81
117
  type?: any;
82
118
  offset?: number;
83
119
  data: any;
@@ -92,19 +128,18 @@ type SetSubImageDataOptions = {
92
128
  type SetImageData3DOptions = {
93
129
  level?: number;
94
130
  dataFormat?: any;
95
- width: number;
96
- height: number;
131
+ width?: number;
132
+ height?: number;
97
133
  depth?: number;
98
- format: any;
134
+ format?: any;
99
135
  type?: any;
100
136
  offset?: number;
101
137
  data: any;
102
138
  parameters?: Record<GL, any>;
103
139
  };
104
140
 
105
-
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);
@@ -208,7 +239,7 @@ export default class WEBGLTexture extends Texture {
208
239
  let data = props.data;
209
240
 
210
241
  if (data instanceof Promise) {
211
- data.then((resolvedImageData) =>
242
+ data.then(resolvedImageData =>
212
243
  this.initialize(
213
244
  Object.assign({}, props, {
214
245
  pixels: resolvedImageData,
@@ -228,10 +259,9 @@ 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
- const {
234
- pixels = null, recreate = false, pixelStore = {}, textureUnit = undefined} = props;
264
+ const {pixels = null, pixelStore = {}, textureUnit = undefined} = props;
235
265
 
236
266
  // pixels variable is for API compatibility purpose
237
267
  if (!data) {
@@ -244,6 +274,8 @@ export default class WEBGLTexture extends Texture {
244
274
  let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;
245
275
  const {depth = 0} = props;
246
276
 
277
+ const glFormat = convertTextureFormatToGL(props.format, this.device.isWebGL2);
278
+
247
279
  // Deduce width and height
248
280
  ({width, height, compressed, dataFormat, type} = this._deduceParameters({
249
281
  format: props.format,
@@ -255,13 +287,11 @@ export default class WEBGLTexture extends Texture {
255
287
  height
256
288
  }));
257
289
 
258
- const format = getWebGLTextureFormat(this.gl, props.format);
259
-
260
290
  // Store opts for accessors
261
291
  this.width = width;
262
292
  this.height = height;
263
- this.depth = depth;
264
- this.format = format;
293
+ // this.depth = depth;
294
+ this.glFormat = glFormat;
265
295
  this.type = type;
266
296
  this.dataFormat = dataFormat;
267
297
  this.textureUnit = textureUnit;
@@ -283,10 +313,10 @@ export default class WEBGLTexture extends Texture {
283
313
  width,
284
314
  height,
285
315
  depth,
286
- format,
316
+ format: glFormat,
287
317
  type,
288
318
  dataFormat,
289
- // @ts-expect-error
319
+ // @ts-expect-error
290
320
  parameters: pixelStore,
291
321
  compressed
292
322
  });
@@ -299,10 +329,6 @@ export default class WEBGLTexture extends Texture {
299
329
  this.generateMipmap();
300
330
  }
301
331
 
302
- // TODO - Store data to enable auto recreate on context loss
303
- if (recreate) {
304
- this.data = data;
305
- }
306
332
  if (isVideo) {
307
333
  this._video = {
308
334
  video: data as HTMLVideoElement,
@@ -315,8 +341,8 @@ export default class WEBGLTexture extends Texture {
315
341
  return this;
316
342
  }
317
343
 
318
- initializeCube(props?: TextureProps): this {
319
- const {mipmaps = true, parameters = {} as Record<GL, any>} = props;
344
+ initializeCube(props?: WEBGLTextureProps): this {
345
+ const {mipmaps = true, parameters = {} as Record<GL, any>} = props;
320
346
 
321
347
  // Store props for accessors
322
348
  // this.props = props;
@@ -357,7 +383,7 @@ export default class WEBGLTexture extends Texture {
357
383
  * If size has changed, reinitializes with current format
358
384
  * @note note clears image and mipmaps
359
385
  */
360
- resize(options: {height: number, width: number, mipmaps?: boolean}): this {
386
+ resize(options: {height: number; width: number; mipmaps?: boolean}): this {
361
387
  const {height, width, mipmaps = false} = options;
362
388
  if (width !== this.width || height !== this.height) {
363
389
  return this.initialize({
@@ -373,7 +399,7 @@ export default class WEBGLTexture extends Texture {
373
399
  }
374
400
 
375
401
  /** Update external texture (video frame) */
376
- update(): this {
402
+ update(): void {
377
403
  if (this._video) {
378
404
  const {video, parameters, lastTime} = this._video;
379
405
  // @ts-expect-error
@@ -401,7 +427,7 @@ export default class WEBGLTexture extends Texture {
401
427
  this.mipmaps = true;
402
428
 
403
429
  this.gl.bindTexture(this.target, this.handle);
404
- withParameters(this.gl, params, () => {
430
+ withGLParameters(this.gl, params, () => {
405
431
  this.gl.generateMipmap(this.target);
406
432
  });
407
433
  this.gl.bindTexture(this.target, null);
@@ -430,7 +456,7 @@ export default class WEBGLTexture extends Texture {
430
456
  */
431
457
  // eslint-disable-next-line max-statements, complexity
432
458
  setImageData(options: SetImageDataOptions) {
433
- if (this.props.dimension === '3d') {
459
+ if (this.props.dimension === '3d' || this.props.dimension === '2d-array') {
434
460
  return this.setImageData3D(options);
435
461
  }
436
462
 
@@ -440,9 +466,9 @@ export default class WEBGLTexture extends Texture {
440
466
  target = this.target,
441
467
  pixels = null,
442
468
  level = 0,
443
- format = this.format,
469
+ glFormat = this.glFormat,
444
470
  offset = 0,
445
- parameters = {} as Record<GL, any>
471
+ parameters = {} as Record<GL, any>
446
472
  } = options;
447
473
 
448
474
  let {
@@ -477,10 +503,20 @@ export default class WEBGLTexture extends Texture {
477
503
 
478
504
  let gl2;
479
505
 
480
- withParameters(this.gl, parameters, () => {
506
+ withGLParameters(this.gl, parameters, () => {
481
507
  switch (dataType) {
482
508
  case 'null':
483
- gl.texImage2D(target, level, format, width, height, 0 /*border*/, dataFormat, type, data);
509
+ gl.texImage2D(
510
+ target,
511
+ level,
512
+ glFormat,
513
+ width,
514
+ height,
515
+ 0 /* border*/,
516
+ dataFormat,
517
+ type,
518
+ data
519
+ );
484
520
  break;
485
521
  case 'typed-array':
486
522
  // Looks like this assert is not necessary, as offset is ignored under WebGL1
@@ -488,7 +524,7 @@ export default class WEBGLTexture extends Texture {
488
524
  gl.texImage2D(
489
525
  target,
490
526
  level,
491
- format,
527
+ glFormat,
492
528
  width,
493
529
  height,
494
530
  0, // border (must be 0)
@@ -506,10 +542,10 @@ export default class WEBGLTexture extends Texture {
506
542
  gl2.texImage2D(
507
543
  target,
508
544
  level,
509
- format,
545
+ glFormat,
510
546
  width,
511
547
  height,
512
- 0 /*border*/,
548
+ 0 /* border*/,
513
549
  dataFormat,
514
550
  type,
515
551
  offset
@@ -521,16 +557,16 @@ export default class WEBGLTexture extends Texture {
521
557
  gl.texImage2D(
522
558
  target,
523
559
  level,
524
- format,
560
+ glFormat,
525
561
  width,
526
562
  height,
527
- 0 /*border*/,
563
+ 0 /* border*/,
528
564
  dataFormat,
529
565
  type,
530
566
  data
531
567
  );
532
568
  } else {
533
- gl.texImage2D(target, level, format, dataFormat, type, data);
569
+ gl.texImage2D(target, level, glFormat, dataFormat, type, data);
534
570
  }
535
571
  break;
536
572
  case 'compressed':
@@ -555,7 +591,7 @@ export default class WEBGLTexture extends Texture {
555
591
  if (data && data.byteLength) {
556
592
  this.trackAllocatedMemory(data.byteLength, 'Texture');
557
593
  } else {
558
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
594
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
559
595
  this.trackAllocatedMemory(this.width * this.height * bytesPerPixel, 'Texture');
560
596
  }
561
597
 
@@ -578,7 +614,7 @@ export default class WEBGLTexture extends Texture {
578
614
  width = this.width,
579
615
  height = this.height,
580
616
  level = 0,
581
- format = this.format,
617
+ glFormat = this.glFormat,
582
618
  type = this.type,
583
619
  dataFormat = this.dataFormat,
584
620
  compressed = false,
@@ -617,10 +653,10 @@ export default class WEBGLTexture extends Texture {
617
653
 
618
654
  this.gl.bindTexture(this.target, this.handle);
619
655
 
620
- withParameters(this.gl, parameters, () => {
656
+ withGLParameters(this.gl, parameters, () => {
621
657
  // TODO - x,y parameters
622
658
  if (compressed) {
623
- this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);
659
+ this.gl.compressedTexSubImage2D(target, level, x, y, width, height, glFormat, data);
624
660
  } else if (data === null) {
625
661
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
626
662
  } else if (ArrayBuffer.isView(data)) {
@@ -714,12 +750,12 @@ export default class WEBGLTexture extends Texture {
714
750
 
715
751
  // HELPER METHODS
716
752
 
717
- _deduceParameters(opts) {
753
+ _deduceParameters(opts: WEBGLTextureProps) {
718
754
  const {format, data} = opts;
719
755
  let {width, height, dataFormat, type, compressed} = opts;
720
756
 
721
757
  // Deduce format and type from format
722
- const parameters = getWebGLTextureParameters(this.gl, format);
758
+ const parameters = getWebGLTextureParameters(format, this.device.isWebGL2);
723
759
  dataFormat = dataFormat || parameters.dataFormat;
724
760
  type = type || parameters.type;
725
761
  compressed = compressed || parameters.compressed;
@@ -792,7 +828,7 @@ export default class WEBGLTexture extends Texture {
792
828
  // ... }
793
829
 
794
830
  const resolvedFaces = await Promise.all(
795
- WEBGLTexture.FACES.map((face) => {
831
+ WEBGLTexture.FACES.map(face => {
796
832
  const facePixels = imageDataMap[face];
797
833
  return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);
798
834
  })
@@ -809,7 +845,7 @@ export default class WEBGLTexture extends Texture {
809
845
  resolvedFaces[index].forEach((image, lodLevel) => {
810
846
  // TODO: adjust width & height for LOD!
811
847
  if (width && height) {
812
- gl.texImage2D(face, lodLevel, format, width, height, 0 /*border*/, format, type, image);
848
+ gl.texImage2D(face, lodLevel, format, width, height, 0 /* border*/, format, type, image);
813
849
  } else {
814
850
  gl.texImage2D(face, lodLevel, format, format, type, image);
815
851
  }
@@ -838,7 +874,7 @@ export default class WEBGLTexture extends Texture {
838
874
 
839
875
  this.bind();
840
876
  if (imageData instanceof Promise) {
841
- imageData.then((resolvedImageData) =>
877
+ imageData.then(resolvedImageData =>
842
878
  this.setImageDataForFace(
843
879
  Object.assign({}, options, {
844
880
  face,
@@ -848,7 +884,7 @@ export default class WEBGLTexture extends Texture {
848
884
  )
849
885
  );
850
886
  } else if (this.width || this.height) {
851
- gl.texImage2D(face, 0, format, width, height, 0 /*border*/, format, type, imageData);
887
+ gl.texImage2D(face, 0, format, width, height, 0 /* border*/, format, type, imageData);
852
888
  } else {
853
889
  gl.texImage2D(face, 0, format, format, type, imageData);
854
890
  }
@@ -857,25 +893,27 @@ export default class WEBGLTexture extends Texture {
857
893
  }
858
894
 
859
895
  /** Image 3D copies from Typed Array or WebGLBuffer */
860
- setImageData3D({
861
- level = 0,
862
- dataFormat,
863
- format,
864
- type, // = GL.UNSIGNED_BYTE,
865
- width,
866
- height,
867
- depth = 1,
868
- offset = 0,
869
- data,
870
- parameters = {} as Record<GL, any> as Record<GL, any>
871
- }: SetImageData3DOptions) {
896
+ setImageData3D(options: SetImageData3DOptions) {
897
+ const {
898
+ level = 0,
899
+ dataFormat,
900
+ format,
901
+ type, // = GL.UNSIGNED_BYTE,
902
+ width,
903
+ height,
904
+ depth = 1,
905
+ offset = 0,
906
+ data,
907
+ parameters = {}
908
+ } = options;
909
+
872
910
  this.trackDeallocatedMemory('Texture');
873
911
 
874
912
  this.gl.bindTexture(this.target, this.handle);
875
913
 
876
- const webglTextureFormat = getWebGLTextureParameters(this.gl, format);
914
+ const webglTextureFormat = getWebGLTextureParameters(format, this.device.isWebGL2);
877
915
 
878
- withParameters(this.gl, parameters, () => {
916
+ withGLParameters(this.gl, parameters, () => {
879
917
  if (ArrayBuffer.isView(data)) {
880
918
  // @ts-expect-error
881
919
  this.gl.texImage3D(
@@ -913,7 +951,7 @@ export default class WEBGLTexture extends Texture {
913
951
  if (data && data.byteLength) {
914
952
  this.trackAllocatedMemory(data.byteLength, 'Texture');
915
953
  } else {
916
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
954
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
917
955
  this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');
918
956
  }
919
957
 
@@ -928,7 +966,7 @@ export default class WEBGLTexture extends Texture {
928
966
  * Sets sampler parameters on texture
929
967
  * @note: Applies NPOT workaround if appropriate
930
968
  */
931
- _setSamplerParameters(parameters: WebGLSamplerParameters) {
969
+ _setSamplerParameters(parameters: GLSamplerParameters): void {
932
970
  // Work around WebGL1 sampling restrictions on NPOT textures
933
971
  if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
934
972
  parameters = updateSamplerParametersForNPOT(parameters);
@@ -943,8 +981,8 @@ export default class WEBGLTexture extends Texture {
943
981
 
944
982
  this.gl.bindTexture(this.target, this.handle);
945
983
  for (const [pname, pvalue] of Object.entries(parameters)) {
946
- const param = Number(pname);
947
- let value = pvalue;
984
+ const param = Number(pname) as GL.TEXTURE_MIN_LOD | GL.TEXTURE_MAX_LOD;
985
+ const value = pvalue;
948
986
 
949
987
  // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
950
988
  // For now, pick the float version for parameters specified as GLfloat.
@@ -960,11 +998,14 @@ export default class WEBGLTexture extends Texture {
960
998
  }
961
999
  }
962
1000
  this.gl.bindTexture(this.target, null);
963
- return this;
1001
+ return;
964
1002
  }
965
1003
 
966
1004
  /** @deprecated For LegacyTexture subclass */
967
- protected _getWebGL1NPOTParameterOverride(pname: number, value: number): number {
1005
+ protected _getWebGL1NPOTParameterOverride(
1006
+ pname: GL.TEXTURE_MIN_FILTER | GL.TEXTURE_WRAP_S | GL.TEXTURE_WRAP_T,
1007
+ value: GL.LINEAR | GL.NEAREST
1008
+ ): number {
968
1009
  // NOTE: Apply NPOT workaround
969
1010
  const npot = this.device.isWebGL1 && isNPOT(this.width, this.height);
970
1011
  if (npot) {
@@ -1019,6 +1060,4 @@ function isNPOT(width: number, height: number): boolean {
1019
1060
 
1020
1061
  function logParameters(parameters: Record<number, GL | number>) {
1021
1062
  log.log(1, 'texture sampler parameters', parameters)();
1022
- for (const [pname, pvalue] of Object.entries(parameters)) {
1023
- }
1024
1063
  }