@luma.gl/webgl 9.0.0-alpha.4 → 9.0.0-alpha.40

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 (525) 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 +42 -47
  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/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 +53 -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 +165 -201
  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 +51 -19
  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 +14 -21
  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 +2 -5
  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 +9 -11
  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/{uniforms.js → decode-webgl-types.js} +20 -29
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  42. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  43. package/dist/adapter/helpers/get-shader-info.js +25 -0
  44. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  45. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  46. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  47. package/dist/adapter/helpers/get-shader-layout.js +60 -115
  48. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  49. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  50. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  51. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  52. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  53. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  54. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  55. package/dist/adapter/helpers/set-uniform.js +27 -57
  56. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  57. package/dist/adapter/helpers/webgl-topology-utils.d.ts +11 -0
  58. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  59. package/dist/adapter/helpers/{attribute-utils.js → webgl-topology-utils.js} +2 -19
  60. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  61. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  62. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  63. package/dist/adapter/objects/constants-to-keys.js +2 -29
  64. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  65. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  66. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-renderbuffer.js +34 -41
  68. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  69. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  70. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  71. package/dist/adapter/objects/webgl-resource.js +26 -83
  72. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  73. package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
  74. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-buffer.js +49 -78
  76. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  78. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-buffer.js +169 -43
  80. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  82. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  84. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  85. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  86. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  87. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-framebuffer.js +46 -155
  89. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  91. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pass.js +91 -11
  93. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  94. package/dist/adapter/resources/webgl-render-pipeline.d.ts +53 -19
  95. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-render-pipeline.js +107 -230
  97. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  98. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  99. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-sampler.js +10 -19
  101. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  102. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  103. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-shader.js +19 -31
  105. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  106. package/dist/adapter/resources/webgl-texture.d.ts +64 -44
  107. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  108. package/dist/adapter/resources/webgl-texture.js +119 -235
  109. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  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 +166 -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 +74 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +214 -128
  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 +23 -48
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -29
  127. package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
  128. package/dist/classic/{buffer.js → buffer-with-accessor.js} +55 -125
  129. package/dist/classic/buffer-with-accessor.js.map +1 -0
  130. package/dist/classic/clear.d.ts +22 -0
  131. package/dist/classic/clear.d.ts.map +1 -0
  132. package/dist/classic/clear.js +88 -0
  133. package/dist/classic/clear.js.map +1 -0
  134. package/dist/classic/copy-and-blit.d.ts +62 -0
  135. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  136. package/dist/classic/copy-and-blit.js +200 -0
  137. package/dist/classic/copy-and-blit.js.map +1 -0
  138. package/dist/classic/format-utils.d.ts +3 -0
  139. package/dist/classic/format-utils.d.ts.map +1 -0
  140. package/dist/classic/format-utils.js +38 -0
  141. package/dist/classic/format-utils.js.map +1 -0
  142. package/dist/classic/typed-array-utils.d.ts +15 -17
  143. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  144. package/dist/classic/typed-array-utils.js +1 -21
  145. package/dist/classic/typed-array-utils.js.map +1 -1
  146. package/dist/context/context/create-browser-context.d.ts +40 -0
  147. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  148. package/dist/context/context/create-browser-context.js +53 -0
  149. package/dist/context/context/create-browser-context.js.map +1 -0
  150. package/dist/context/context/create-headless-context.d.ts +9 -0
  151. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  152. package/dist/context/context/create-headless-context.js +42 -0
  153. package/dist/context/context/create-headless-context.js.map +1 -0
  154. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  155. package/dist/context/context/webgl-checks.js +1 -4
  156. package/dist/context/context/webgl-checks.js.map +1 -1
  157. package/dist/context/debug/spector.d.ts +1 -2
  158. package/dist/context/debug/spector.d.ts.map +1 -1
  159. package/dist/context/debug/spector.js +8 -20
  160. package/dist/context/debug/spector.js.map +1 -1
  161. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  162. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  163. package/dist/context/debug/webgl-developer-tools.js +16 -39
  164. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  165. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  166. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  167. package/dist/context/parameters/unified-parameter-api.js +9 -19
  168. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  169. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  170. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  171. package/dist/context/parameters/webgl-parameter-tables.js +18 -36
  172. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/context/polyfill/context-data.d.ts +13 -0
  174. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  175. package/dist/context/polyfill/context-data.js +12 -0
  176. package/dist/context/polyfill/context-data.js.map +1 -0
  177. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  178. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  179. package/dist/context/polyfill/get-parameter-polyfill.js +4 -9
  180. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-context.js +22 -30
  183. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  185. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  186. package/dist/context/polyfill/polyfill-table.js +10 -32
  187. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  188. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  189. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  190. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  191. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  192. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  193. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  194. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  195. package/dist/context/state-tracker/track-context-state.js +26 -62
  196. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  197. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  198. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  199. package/dist/context/state-tracker/with-parameters.js +8 -10
  200. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  201. package/dist/dist.dev.js +10390 -0
  202. package/dist/index.cjs +6615 -0
  203. package/dist/index.d.ts +27 -24
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +27 -26
  206. package/dist/index.js.map +1 -1
  207. package/dist/types.d.ts +3 -1
  208. package/dist/types.d.ts.map +1 -1
  209. package/dist/types.js.map +1 -1
  210. package/dist.min.js +37 -0
  211. package/package.json +21 -9
  212. package/src/adapter/converters/device-parameters.ts +124 -36
  213. package/src/adapter/converters/sampler-parameters.ts +22 -9
  214. package/src/adapter/converters/shader-formats.ts +44 -0
  215. package/src/adapter/converters/texture-formats.ts +267 -194
  216. package/src/adapter/converters/vertex-formats.ts +71 -10
  217. package/src/adapter/device-helpers/device-features.ts +13 -3
  218. package/src/adapter/device-helpers/device-limits.ts +5 -3
  219. package/src/adapter/device-helpers/get-device-info.ts +17 -10
  220. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  221. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  222. package/src/adapter/helpers/get-shader-info.ts +41 -0
  223. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  224. package/src/adapter/helpers/parse-shader-compiler-log.ts +4 -2
  225. package/src/adapter/helpers/set-uniform.ts +39 -35
  226. package/src/adapter/helpers/{attribute-utils.ts → webgl-topology-utils.ts} +7 -5
  227. package/src/adapter/objects/constants-to-keys.ts +6 -25
  228. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  229. package/src/adapter/objects/webgl-resource.ts +16 -23
  230. package/src/adapter/resources/webgl-buffer.ts +59 -58
  231. package/src/adapter/resources/webgl-command-buffer.ts +333 -25
  232. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  233. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  234. package/src/adapter/resources/webgl-framebuffer.ts +89 -133
  235. package/src/adapter/resources/webgl-render-pass.ts +160 -4
  236. package/src/adapter/resources/webgl-render-pipeline.ts +254 -174
  237. package/src/adapter/resources/webgl-sampler.ts +15 -9
  238. package/src/adapter/resources/webgl-shader.ts +14 -11
  239. package/src/adapter/resources/webgl-texture.ts +120 -90
  240. package/src/adapter/resources/webgl-vertex-array.ts +279 -0
  241. package/src/adapter/webgl-canvas-context.ts +16 -14
  242. package/src/adapter/webgl-device.ts +321 -78
  243. package/src/classic/accessor.ts +7 -17
  244. package/src/classic/{buffer.ts → buffer-with-accessor.ts} +68 -76
  245. package/src/classic/clear.ts +113 -0
  246. package/src/classic/copy-and-blit.ts +314 -0
  247. package/src/classic/format-utils.ts +46 -0
  248. package/src/classic/typed-array-utils.ts +19 -27
  249. package/src/context/context/create-browser-context.ts +140 -0
  250. package/src/context/context/create-headless-context.ts +51 -0
  251. package/src/context/context/webgl-checks.ts +3 -1
  252. package/src/context/debug/spector.ts +9 -6
  253. package/src/context/debug/webgl-developer-tools.ts +23 -15
  254. package/src/context/parameters/unified-parameter-api.ts +23 -14
  255. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  256. package/src/context/polyfill/context-data.ts +30 -0
  257. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  258. package/src/context/polyfill/polyfill-context.ts +10 -9
  259. package/src/context/polyfill/polyfill-table.ts +21 -16
  260. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  261. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  262. package/src/context/state-tracker/track-context-state.ts +20 -16
  263. package/src/context/state-tracker/with-parameters.ts +13 -4
  264. package/src/index.ts +69 -35
  265. package/src/types.ts +5 -0
  266. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  267. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  268. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  269. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  270. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  271. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  272. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  273. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  274. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  275. package/dist/adapter/helpers/uniforms.js.map +0 -1
  276. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  277. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  278. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  279. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  280. package/dist/bundle.d.ts +0 -2
  281. package/dist/bundle.d.ts.map +0 -1
  282. package/dist/bundle.js +0 -5
  283. package/dist/bundle.js.map +0 -1
  284. package/dist/classic/buffer.d.ts.map +0 -1
  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 -831
  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 -144
  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/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/context/context/context-state.ts +0 -41
  522. package/src/context/context/create-context.ts +0 -110
  523. package/src/context/context/device-pixels.ts +0 -152
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -283
@@ -1,14 +1,16 @@
1
1
  // luma.gl, MIT license
2
- import {log, uid, Shader, ShaderProps} from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import {getShaderInfo, CompilerMessage, formatCompilerLog} from '@luma.gl/shadertools';
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {log, uid, Shader, ShaderProps, CompilerMessage, formatCompilerLog} from '@luma.gl/core';
5
+ import {GL} from '@luma.gl/constants';
6
+ import {getShaderInfo} from '../helpers/get-shader-info';
5
7
  import {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';
6
- import WebGLDevice from '../webgl-device';
8
+ import {WebGLDevice} from '../webgl-device';
7
9
 
8
10
  /**
9
11
  * An immutable compiled shader program that execute portions of the GPU Pipeline
10
12
  */
11
- export default class WEBGLShader extends Shader {
13
+ export class WEBGLShader extends Shader {
12
14
  readonly device: WebGLDevice;
13
15
  readonly handle: WebGLShader;
14
16
 
@@ -28,18 +30,18 @@ import WebGLDevice from '../webgl-device';
28
30
  this._compile(this.source);
29
31
  }
30
32
 
31
- destroy(): void {
33
+ override destroy(): void {
32
34
  if (this.handle) {
33
35
  this.removeStats();
34
36
  this.device.gl.deleteShader(this.handle);
35
- // @ts-expect-error
36
- this.handle = null;
37
+ // this.handle = null;
38
+ this.destroyed = true;
37
39
  }
38
40
  }
39
41
 
40
42
  async compilationInfo(): Promise<readonly CompilerMessage[]> {
41
43
  const log = this.device.gl.getShaderInfoLog(this.handle);
42
- return parseShaderCompilerLog(log);
44
+ return log ? parseShaderCompilerLog(log) : [];
43
45
  }
44
46
 
45
47
  // PRIVATE METHODS
@@ -58,8 +60,9 @@ import WebGLDevice from '../webgl-device';
58
60
  const compileStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);
59
61
  if (!compileStatus) {
60
62
  const shaderLog = gl.getShaderInfoLog(this.handle);
61
- const messages = parseShaderCompilerLog(shaderLog).filter(message => message.type === 'error');
62
- const formattedLog = formatCompilerLog(messages, source);
63
+ const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];
64
+ const messages = parsedLog.filter(message => message.type === 'error');
65
+ const formattedLog = formatCompilerLog(messages, source, {showSourceCode: true});
63
66
  const shaderName: string = getShaderInfo(source).name;
64
67
  const shaderDescription = `${this.stage} shader ${shaderName}`;
65
68
  log.error(`GLSL compilation errors in ${shaderDescription}\n${formattedLog}`)();
@@ -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,28 +27,63 @@ 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
69
+ ;
33
70
 
34
71
  type SetImageDataOptions = {
35
72
  target?: number;
36
73
  level?: number;
37
74
  dataFormat?: any;
38
- width: number;
39
- height: number;
75
+ width?: number;
76
+ height?: number;
40
77
  depth?: number;
41
- format: any;
78
+ glFormat?: GL;
42
79
  type?: any;
43
80
  offset?: number;
44
- data: any;
81
+ data: any; // TextureSourceData;
45
82
  compressed?: boolean;
46
83
  parameters?: Record<GL, any>;
47
84
  /** @deprecated */
48
85
  pixels?: any;
49
- };
86
+ }
50
87
 
51
88
  /**
52
89
  * @param {*} pixels, data -
@@ -77,7 +114,7 @@ type SetSubImageDataOptions = {
77
114
  width?: number;
78
115
  height?: number;
79
116
  depth?: number;
80
- format?: any;
117
+ glFormat?: any;
81
118
  type?: any;
82
119
  offset?: number;
83
120
  data: any;
@@ -92,10 +129,10 @@ type SetSubImageDataOptions = {
92
129
  type SetImageData3DOptions = {
93
130
  level?: number;
94
131
  dataFormat?: any;
95
- width: number;
96
- height: number;
132
+ width?: number;
133
+ height?: number;
97
134
  depth?: number;
98
- format: any;
135
+ format?: any;
99
136
  type?: any;
100
137
  offset?: number;
101
138
  data: any;
@@ -104,7 +141,7 @@ type SetImageData3DOptions = {
104
141
 
105
142
 
106
143
  // Polyfill
107
- export default class WEBGLTexture extends Texture {
144
+ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
108
145
  // TODO - remove?
109
146
  static FACES: number[] = [
110
147
  GL.TEXTURE_CUBE_MAP_POSITIVE_X,
@@ -121,13 +158,12 @@ export default class WEBGLTexture extends Texture {
121
158
  readonly gl2: WebGL2RenderingContext | null;
122
159
  readonly handle: WebGLTexture;
123
160
 
124
- data;
161
+ /** Sampler object (currently unused) */
162
+ sampler: WEBGLSampler = undefined;
125
163
 
126
- width: number = undefined;
127
- height: number = undefined;
128
- depth: number = undefined;
164
+ // data;
129
165
 
130
- format: GL = undefined;
166
+ glFormat: GL = undefined;
131
167
  type: GL = undefined;
132
168
  dataFormat: GL = undefined;
133
169
  mipmaps: boolean = undefined;
@@ -144,9 +180,6 @@ export default class WEBGLTexture extends Texture {
144
180
  target: GL;
145
181
  textureUnit: number = undefined;
146
182
 
147
- /** Sampler object (currently unused) */
148
- sampler: WEBGLSampler = undefined;
149
-
150
183
  /**
151
184
  * Program.draw() checks the loaded flag of all textures to avoid
152
185
  * Textures that are still loading from promises
@@ -159,16 +192,16 @@ export default class WEBGLTexture extends Texture {
159
192
  lastTime: number;
160
193
  };
161
194
 
162
- constructor(device: Device, props: TextureProps) {
163
- super(device, {format: GL.RGBA, ...props});
195
+ constructor(device: Device, props: WEBGLTextureProps) {
196
+ super(device, {...DEFAULT_WEBGL_TEXTURE_PROPS, format: 'rgba8unorm', ...props});
164
197
 
165
198
  this.device = cast<WebGLDevice>(device);
166
199
  this.gl = this.device.gl;
167
200
  this.gl2 = this.device.gl2;
168
201
  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};
202
+ this.device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data}); // {name: this.props.id};
171
203
 
204
+ this.glFormat = GL.RGBA;
172
205
  this.target = getWebGLTextureTarget(this.props);
173
206
 
174
207
  // Program.draw() checks the loaded flag of all textures
@@ -184,22 +217,22 @@ export default class WEBGLTexture extends Texture {
184
217
  Object.seal(this);
185
218
  }
186
219
 
187
- destroy(): void {
220
+ override destroy(): void {
188
221
  if (this.handle) {
189
222
  this.gl.deleteTexture(this.handle);
190
223
  this.removeStats();
191
224
  this.trackDeallocatedMemory('Texture');
192
- // @ts-expect-error
193
- this.handle = null;
225
+ // this.handle = null;
226
+ this.destroyed = true;
194
227
  }
195
228
  }
196
229
 
197
- toString(): string {
230
+ override toString(): string {
198
231
  return `Texture(${this.id},${this.width}x${this.height})`;
199
232
  }
200
233
 
201
234
  // eslint-disable-next-line max-statements
202
- initialize(props: TextureProps = {}): this {
235
+ initialize(props: WEBGLTextureProps = {}): this {
203
236
  // Cube textures
204
237
  if (this.props.dimension === 'cube') {
205
238
  return this.initializeCube(props);
@@ -228,10 +261,10 @@ export default class WEBGLTexture extends Texture {
228
261
  return this;
229
262
  }
230
263
 
231
- let {parameters = {} as Record<GL, any>} = props;
264
+ const {parameters = {} as Record<GL, any>} = props;
232
265
 
233
266
  const {
234
- pixels = null, recreate = false, pixelStore = {}, textureUnit = undefined} = props;
267
+ pixels = null, pixelStore = {}, textureUnit = undefined} = props;
235
268
 
236
269
  // pixels variable is for API compatibility purpose
237
270
  if (!data) {
@@ -244,6 +277,8 @@ export default class WEBGLTexture extends Texture {
244
277
  let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;
245
278
  const {depth = 0} = props;
246
279
 
280
+ const glFormat = convertTextureFormatToGL(props.format, this.device.isWebGL2);
281
+
247
282
  // Deduce width and height
248
283
  ({width, height, compressed, dataFormat, type} = this._deduceParameters({
249
284
  format: props.format,
@@ -255,13 +290,11 @@ export default class WEBGLTexture extends Texture {
255
290
  height
256
291
  }));
257
292
 
258
- const format = getWebGLTextureFormat(this.gl, props.format);
259
-
260
293
  // Store opts for accessors
261
294
  this.width = width;
262
295
  this.height = height;
263
- this.depth = depth;
264
- this.format = format;
296
+ // this.depth = depth;
297
+ this.glFormat = glFormat;
265
298
  this.type = type;
266
299
  this.dataFormat = dataFormat;
267
300
  this.textureUnit = textureUnit;
@@ -283,7 +316,7 @@ export default class WEBGLTexture extends Texture {
283
316
  width,
284
317
  height,
285
318
  depth,
286
- format,
319
+ format: glFormat,
287
320
  type,
288
321
  dataFormat,
289
322
  // @ts-expect-error
@@ -299,10 +332,6 @@ export default class WEBGLTexture extends Texture {
299
332
  this.generateMipmap();
300
333
  }
301
334
 
302
- // TODO - Store data to enable auto recreate on context loss
303
- if (recreate) {
304
- this.data = data;
305
- }
306
335
  if (isVideo) {
307
336
  this._video = {
308
337
  video: data as HTMLVideoElement,
@@ -315,7 +344,7 @@ export default class WEBGLTexture extends Texture {
315
344
  return this;
316
345
  }
317
346
 
318
- initializeCube(props?: TextureProps): this {
347
+ initializeCube(props?: WEBGLTextureProps): this {
319
348
  const {mipmaps = true, parameters = {} as Record<GL, any>} = props;
320
349
 
321
350
  // Store props for accessors
@@ -357,7 +386,8 @@ export default class WEBGLTexture extends Texture {
357
386
  * If size has changed, reinitializes with current format
358
387
  * @note note clears image and mipmaps
359
388
  */
360
- resize({height, width, mipmaps = false}): this {
389
+ resize(options: {height: number, width: number, mipmaps?: boolean}): this {
390
+ const {height, width, mipmaps = false} = options;
361
391
  if (width !== this.width || height !== this.height) {
362
392
  return this.initialize({
363
393
  width,
@@ -372,7 +402,7 @@ export default class WEBGLTexture extends Texture {
372
402
  }
373
403
 
374
404
  /** Update external texture (video frame) */
375
- update(): this {
405
+ update(): void {
376
406
  if (this._video) {
377
407
  const {video, parameters, lastTime} = this._video;
378
408
  // @ts-expect-error
@@ -400,7 +430,7 @@ export default class WEBGLTexture extends Texture {
400
430
  this.mipmaps = true;
401
431
 
402
432
  this.gl.bindTexture(this.target, this.handle);
403
- withParameters(this.gl, params, () => {
433
+ withGLParameters(this.gl, params, () => {
404
434
  this.gl.generateMipmap(this.target);
405
435
  });
406
436
  this.gl.bindTexture(this.target, null);
@@ -429,7 +459,7 @@ export default class WEBGLTexture extends Texture {
429
459
  */
430
460
  // eslint-disable-next-line max-statements, complexity
431
461
  setImageData(options: SetImageDataOptions) {
432
- if (this.props.dimension === '3d') {
462
+ if (this.props.dimension === '3d' || this.props.dimension === '2d-array') {
433
463
  return this.setImageData3D(options);
434
464
  }
435
465
 
@@ -439,7 +469,7 @@ export default class WEBGLTexture extends Texture {
439
469
  target = this.target,
440
470
  pixels = null,
441
471
  level = 0,
442
- format = this.format,
472
+ glFormat = this.glFormat,
443
473
  offset = 0,
444
474
  parameters = {} as Record<GL, any>
445
475
  } = options;
@@ -476,10 +506,10 @@ export default class WEBGLTexture extends Texture {
476
506
 
477
507
  let gl2;
478
508
 
479
- withParameters(this.gl, parameters, () => {
509
+ withGLParameters(this.gl, parameters, () => {
480
510
  switch (dataType) {
481
511
  case 'null':
482
- gl.texImage2D(target, level, format, width, height, 0 /*border*/, dataFormat, type, data);
512
+ gl.texImage2D(target, level, glFormat, width, height, 0 /* border*/, dataFormat, type, data);
483
513
  break;
484
514
  case 'typed-array':
485
515
  // Looks like this assert is not necessary, as offset is ignored under WebGL1
@@ -487,7 +517,7 @@ export default class WEBGLTexture extends Texture {
487
517
  gl.texImage2D(
488
518
  target,
489
519
  level,
490
- format,
520
+ glFormat,
491
521
  width,
492
522
  height,
493
523
  0, // border (must be 0)
@@ -505,10 +535,10 @@ export default class WEBGLTexture extends Texture {
505
535
  gl2.texImage2D(
506
536
  target,
507
537
  level,
508
- format,
538
+ glFormat,
509
539
  width,
510
540
  height,
511
- 0 /*border*/,
541
+ 0 /* border*/,
512
542
  dataFormat,
513
543
  type,
514
544
  offset
@@ -520,16 +550,16 @@ export default class WEBGLTexture extends Texture {
520
550
  gl.texImage2D(
521
551
  target,
522
552
  level,
523
- format,
553
+ glFormat,
524
554
  width,
525
555
  height,
526
- 0 /*border*/,
556
+ 0 /* border*/,
527
557
  dataFormat,
528
558
  type,
529
559
  data
530
560
  );
531
561
  } else {
532
- gl.texImage2D(target, level, format, dataFormat, type, data);
562
+ gl.texImage2D(target, level, glFormat, dataFormat, type, data);
533
563
  }
534
564
  break;
535
565
  case 'compressed':
@@ -554,7 +584,7 @@ export default class WEBGLTexture extends Texture {
554
584
  if (data && data.byteLength) {
555
585
  this.trackAllocatedMemory(data.byteLength, 'Texture');
556
586
  } else {
557
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
587
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
558
588
  this.trackAllocatedMemory(this.width * this.height * bytesPerPixel, 'Texture');
559
589
  }
560
590
 
@@ -577,7 +607,7 @@ export default class WEBGLTexture extends Texture {
577
607
  width = this.width,
578
608
  height = this.height,
579
609
  level = 0,
580
- format = this.format,
610
+ glFormat = this.glFormat,
581
611
  type = this.type,
582
612
  dataFormat = this.dataFormat,
583
613
  compressed = false,
@@ -616,10 +646,10 @@ export default class WEBGLTexture extends Texture {
616
646
 
617
647
  this.gl.bindTexture(this.target, this.handle);
618
648
 
619
- withParameters(this.gl, parameters, () => {
649
+ withGLParameters(this.gl, parameters, () => {
620
650
  // TODO - x,y parameters
621
651
  if (compressed) {
622
- this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);
652
+ this.gl.compressedTexSubImage2D(target, level, x, y, width, height, glFormat, data);
623
653
  } else if (data === null) {
624
654
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
625
655
  } else if (ArrayBuffer.isView(data)) {
@@ -713,12 +743,12 @@ export default class WEBGLTexture extends Texture {
713
743
 
714
744
  // HELPER METHODS
715
745
 
716
- _deduceParameters(opts) {
746
+ _deduceParameters(opts: WEBGLTextureProps) {
717
747
  const {format, data} = opts;
718
748
  let {width, height, dataFormat, type, compressed} = opts;
719
749
 
720
750
  // Deduce format and type from format
721
- const parameters = getWebGLTextureParameters(this.gl, format);
751
+ const parameters = getWebGLTextureParameters(format, this.device.isWebGL2);
722
752
  dataFormat = dataFormat || parameters.dataFormat;
723
753
  type = type || parameters.type;
724
754
  compressed = compressed || parameters.compressed;
@@ -808,7 +838,7 @@ export default class WEBGLTexture extends Texture {
808
838
  resolvedFaces[index].forEach((image, lodLevel) => {
809
839
  // TODO: adjust width & height for LOD!
810
840
  if (width && height) {
811
- gl.texImage2D(face, lodLevel, format, width, height, 0 /*border*/, format, type, image);
841
+ gl.texImage2D(face, lodLevel, format, width, height, 0 /* border*/, format, type, image);
812
842
  } else {
813
843
  gl.texImage2D(face, lodLevel, format, format, type, image);
814
844
  }
@@ -847,7 +877,7 @@ export default class WEBGLTexture extends Texture {
847
877
  )
848
878
  );
849
879
  } else if (this.width || this.height) {
850
- gl.texImage2D(face, 0, format, width, height, 0 /*border*/, format, type, imageData);
880
+ gl.texImage2D(face, 0, format, width, height, 0 /* border*/, format, type, imageData);
851
881
  } else {
852
882
  gl.texImage2D(face, 0, format, format, type, imageData);
853
883
  }
@@ -856,25 +886,27 @@ export default class WEBGLTexture extends Texture {
856
886
  }
857
887
 
858
888
  /** 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) {
889
+ setImageData3D(options: SetImageData3DOptions) {
890
+ const {
891
+ level = 0,
892
+ dataFormat,
893
+ format,
894
+ type, // = GL.UNSIGNED_BYTE,
895
+ width,
896
+ height,
897
+ depth = 1,
898
+ offset = 0,
899
+ data,
900
+ parameters = {}
901
+ } = options;
902
+
871
903
  this.trackDeallocatedMemory('Texture');
872
904
 
873
905
  this.gl.bindTexture(this.target, this.handle);
874
906
 
875
- const webglTextureFormat = getWebGLTextureParameters(this.gl, format);
907
+ const webglTextureFormat = getWebGLTextureParameters(format, this.device.isWebGL2);
876
908
 
877
- withParameters(this.gl, parameters, () => {
909
+ withGLParameters(this.gl, parameters, () => {
878
910
  if (ArrayBuffer.isView(data)) {
879
911
  // @ts-expect-error
880
912
  this.gl.texImage3D(
@@ -912,7 +944,7 @@ export default class WEBGLTexture extends Texture {
912
944
  if (data && data.byteLength) {
913
945
  this.trackAllocatedMemory(data.byteLength, 'Texture');
914
946
  } else {
915
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
947
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
916
948
  this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');
917
949
  }
918
950
 
@@ -927,7 +959,7 @@ export default class WEBGLTexture extends Texture {
927
959
  * Sets sampler parameters on texture
928
960
  * @note: Applies NPOT workaround if appropriate
929
961
  */
930
- _setSamplerParameters(parameters: WebGLSamplerParameters) {
962
+ _setSamplerParameters(parameters: GLSamplerParameters): void {
931
963
  // Work around WebGL1 sampling restrictions on NPOT textures
932
964
  if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
933
965
  parameters = updateSamplerParametersForNPOT(parameters);
@@ -943,7 +975,7 @@ export default class WEBGLTexture extends Texture {
943
975
  this.gl.bindTexture(this.target, this.handle);
944
976
  for (const [pname, pvalue] of Object.entries(parameters)) {
945
977
  const param = Number(pname);
946
- let value = pvalue;
978
+ const value = pvalue;
947
979
 
948
980
  // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
949
981
  // For now, pick the float version for parameters specified as GLfloat.
@@ -959,7 +991,7 @@ export default class WEBGLTexture extends Texture {
959
991
  }
960
992
  }
961
993
  this.gl.bindTexture(this.target, null);
962
- return this;
994
+ return;
963
995
  }
964
996
 
965
997
  /** @deprecated For LegacyTexture subclass */
@@ -1018,6 +1050,4 @@ function isNPOT(width: number, height: number): boolean {
1018
1050
 
1019
1051
  function logParameters(parameters: Record<number, GL | number>) {
1020
1052
  log.log(1, 'texture sampler parameters', parameters)();
1021
- for (const [pname, pvalue] of Object.entries(parameters)) {
1022
- }
1023
1053
  }