@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (553) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +12 -3
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +300 -146
  5. package/dist/adapter/converters/sampler-parameters.d.ts +3 -13
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +74 -219
  8. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  9. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  10. package/dist/adapter/converters/shader-formats.js +59 -0
  11. package/dist/adapter/converters/texture-formats.d.ts +41 -57
  12. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  13. package/dist/adapter/converters/texture-formats.js +490 -925
  14. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  15. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.js +56 -33
  17. package/dist/adapter/device-helpers/webgl-device-features.d.ts +20 -0
  18. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  19. package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
  20. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  21. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  22. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  23. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  24. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  25. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  26. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  27. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  28. package/dist/adapter/helpers/decode-webgl-types.js +101 -0
  29. package/dist/adapter/helpers/get-shader-layout.d.ts +2 -49
  30. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-layout.js +263 -307
  32. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  33. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  34. package/dist/adapter/helpers/parse-shader-compiler-log.js +48 -33
  35. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  36. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  37. package/dist/adapter/helpers/set-uniform.js +66 -111
  38. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  39. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  40. package/dist/adapter/helpers/webgl-topology-utils.js +88 -0
  41. package/dist/adapter/objects/constants-to-keys.d.ts +2 -4
  42. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  43. package/dist/adapter/objects/constants-to-keys.js +18 -38
  44. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  45. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  46. package/dist/adapter/objects/webgl-renderbuffer.js +92 -91
  47. package/dist/adapter/objects/webgl-resource.d.ts +6 -31
  48. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  49. package/dist/adapter/objects/webgl-resource.js +103 -205
  50. package/dist/adapter/resources/webgl-buffer.d.ts +20 -16
  51. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  52. package/dist/adapter/resources/webgl-buffer.js +163 -155
  53. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  54. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-command-buffer.js +283 -58
  56. package/dist/adapter/resources/webgl-command-encoder.d.ts +12 -6
  57. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  58. package/dist/adapter/resources/webgl-command-encoder.js +36 -52
  59. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  60. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -29
  61. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  62. package/dist/adapter/resources/webgl-framebuffer.js +184 -261
  63. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  64. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  65. package/dist/adapter/resources/webgl-query-set.js +136 -0
  66. package/dist/adapter/resources/webgl-render-pass.d.ts +21 -4
  67. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-render-pass.js +140 -20
  69. package/dist/adapter/resources/webgl-render-pipeline.d.ts +44 -21
  70. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-render-pipeline.js +371 -413
  72. package/dist/adapter/resources/webgl-sampler.d.ts +5 -6
  73. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-sampler.js +46 -46
  75. package/dist/adapter/resources/webgl-shader.d.ts +16 -6
  76. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-shader.js +113 -72
  78. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  79. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  80. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  81. package/dist/adapter/resources/webgl-texture.d.ts +53 -35
  82. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-texture.js +623 -822
  84. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  85. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-transform-feedback.js +162 -0
  87. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  88. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  89. package/dist/adapter/resources/webgl-vertex-array.js +239 -0
  90. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  91. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  92. package/dist/adapter/webgl-canvas-context.js +61 -50
  93. package/dist/adapter/webgl-device.d.ts +112 -55
  94. package/dist/adapter/webgl-device.d.ts.map +1 -1
  95. package/dist/adapter/webgl-device.js +453 -331
  96. package/dist/classic/accessor.d.ts +3 -3
  97. package/dist/classic/accessor.d.ts.map +1 -1
  98. package/dist/classic/accessor.js +135 -130
  99. package/dist/classic/clear.d.ts +22 -0
  100. package/dist/classic/clear.d.ts.map +1 -0
  101. package/dist/classic/clear.js +89 -0
  102. package/dist/classic/copy-and-blit.d.ts +62 -0
  103. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  104. package/dist/classic/copy-and-blit.js +191 -0
  105. package/dist/classic/format-utils.d.ts +3 -0
  106. package/dist/classic/format-utils.d.ts.map +1 -0
  107. package/dist/classic/format-utils.js +44 -0
  108. package/dist/classic/typed-array-utils.d.ts +17 -17
  109. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  110. package/dist/classic/typed-array-utils.js +96 -102
  111. package/dist/context/debug/spector.d.ts +1 -2
  112. package/dist/context/debug/spector.d.ts.map +1 -1
  113. package/dist/context/debug/spector.js +56 -63
  114. package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
  115. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  116. package/dist/context/debug/webgl-developer-tools.js +106 -102
  117. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  118. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  119. package/dist/context/helpers/create-browser-context.js +67 -0
  120. package/dist/context/helpers/webgl-context-data.d.ts +13 -0
  121. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  122. package/dist/context/helpers/webgl-context-data.js +21 -0
  123. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  124. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  125. package/dist/context/helpers/webgl-extensions.js +10 -0
  126. package/dist/context/parameters/unified-parameter-api.d.ts +4 -5
  127. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  128. package/dist/context/parameters/unified-parameter-api.js +91 -54
  129. package/dist/context/parameters/webgl-parameter-tables.d.ts +115 -106
  130. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  131. package/dist/context/parameters/webgl-parameter-tables.js +463 -423
  132. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  133. package/dist/context/state-tracker/deep-array-equal.js +19 -18
  134. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  135. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  136. package/dist/context/state-tracker/track-context-state.js +192 -163
  137. package/dist/context/state-tracker/with-parameters.d.ts +2 -2
  138. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  139. package/dist/context/state-tracker/with-parameters.js +44 -32
  140. package/dist/dist.dev.js +6574 -0
  141. package/dist/dist.min.js +10 -0
  142. package/dist/index.cjs +5586 -0
  143. package/dist/index.cjs.map +7 -0
  144. package/dist/index.d.ts +25 -32
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +37 -28
  147. package/dist/types.d.ts +3 -1
  148. package/dist/types.d.ts.map +1 -1
  149. package/dist/types.js +3 -1
  150. package/dist.min.js +19 -0
  151. package/package.json +22 -15
  152. package/src/adapter/converters/device-parameters.ts +217 -54
  153. package/src/adapter/converters/sampler-parameters.ts +46 -126
  154. package/src/adapter/converters/shader-formats.ts +69 -0
  155. package/src/adapter/converters/texture-formats.ts +369 -340
  156. package/src/adapter/converters/vertex-formats.ts +71 -10
  157. package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
  158. package/src/adapter/device-helpers/webgl-device-info.ts +111 -0
  159. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  160. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +38 -25
  161. package/src/adapter/helpers/get-shader-layout.ts +104 -158
  162. package/src/adapter/helpers/parse-shader-compiler-log.ts +31 -11
  163. package/src/adapter/helpers/set-uniform.ts +39 -36
  164. package/src/adapter/helpers/webgl-topology-utils.ts +110 -0
  165. package/src/adapter/objects/constants-to-keys.ts +8 -26
  166. package/src/adapter/objects/webgl-renderbuffer.ts +68 -40
  167. package/src/adapter/objects/webgl-resource.ts +16 -156
  168. package/src/adapter/resources/webgl-buffer.ts +103 -112
  169. package/src/adapter/resources/webgl-command-buffer.ts +333 -41
  170. package/src/adapter/resources/webgl-command-encoder.ts +33 -22
  171. package/src/adapter/resources/webgl-external-texture.ts +11 -8
  172. package/src/adapter/resources/webgl-framebuffer.ts +125 -165
  173. package/src/adapter/resources/webgl-query-set.ts +171 -0
  174. package/src/adapter/resources/webgl-render-pass.ts +176 -6
  175. package/src/adapter/resources/webgl-render-pipeline.ts +308 -229
  176. package/src/adapter/resources/webgl-sampler.ts +19 -18
  177. package/src/adapter/resources/webgl-shader.ts +91 -32
  178. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  179. package/src/adapter/resources/webgl-texture.ts +147 -184
  180. package/src/adapter/resources/webgl-transform-feedback.ts +196 -0
  181. package/src/adapter/resources/webgl-vertex-array.ts +282 -0
  182. package/src/adapter/webgl-canvas-context.ts +23 -22
  183. package/src/adapter/webgl-device.ts +411 -196
  184. package/src/classic/accessor.ts +12 -8
  185. package/src/classic/clear.ts +118 -0
  186. package/src/classic/copy-and-blit.ts +318 -0
  187. package/src/classic/format-utils.ts +47 -0
  188. package/src/classic/typed-array-utils.ts +19 -31
  189. package/src/context/debug/spector.ts +16 -10
  190. package/src/context/debug/webgl-developer-tools.ts +52 -32
  191. package/src/context/helpers/create-browser-context.ts +116 -0
  192. package/src/context/helpers/webgl-context-data.ts +31 -0
  193. package/src/context/helpers/webgl-extensions.ts +17 -0
  194. package/src/context/parameters/unified-parameter-api.ts +11 -16
  195. package/src/context/parameters/webgl-parameter-tables.ts +171 -121
  196. package/src/context/state-tracker/deep-array-equal.ts +3 -0
  197. package/src/context/state-tracker/track-context-state.ts +35 -26
  198. package/src/context/state-tracker/with-parameters.ts +12 -3
  199. package/src/index.ts +41 -55
  200. package/src/types.ts +6 -0
  201. package/dist/adapter/converters/device-parameters.js.map +0 -1
  202. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  203. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  204. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  205. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  206. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  207. package/dist/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  209. package/dist/adapter/device-helpers/device-features.d.ts +0 -9
  210. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  211. package/dist/adapter/device-helpers/device-features.js +0 -112
  212. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  213. package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
  214. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  215. package/dist/adapter/device-helpers/device-limits.js +0 -91
  216. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  217. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  218. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  219. package/dist/adapter/device-helpers/get-device-info.js +0 -44
  220. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  221. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  222. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  223. package/dist/adapter/device-helpers/is-old-ie.js +0 -8
  224. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  225. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  226. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  227. package/dist/adapter/helpers/attribute-utils.js +0 -81
  228. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  229. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  230. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  231. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  232. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  233. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  234. package/dist/adapter/helpers/uniforms.js +0 -99
  235. package/dist/adapter/helpers/uniforms.js.map +0 -1
  236. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  237. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  238. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  239. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  240. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  241. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  242. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  243. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  244. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  245. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  246. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  247. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  248. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  249. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  250. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  251. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  252. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  253. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  254. package/dist/adapter/webgl-device.js.map +0 -1
  255. package/dist/bundle.d.ts +0 -2
  256. package/dist/bundle.d.ts.map +0 -1
  257. package/dist/bundle.js +0 -5
  258. package/dist/bundle.js.map +0 -1
  259. package/dist/classic/accessor.js.map +0 -1
  260. package/dist/classic/buffer.d.ts +0 -95
  261. package/dist/classic/buffer.d.ts.map +0 -1
  262. package/dist/classic/buffer.js +0 -392
  263. package/dist/classic/buffer.js.map +0 -1
  264. package/dist/classic/typed-array-utils.js.map +0 -1
  265. package/dist/context/context/context-state.d.ts +0 -18
  266. package/dist/context/context/context-state.d.ts.map +0 -1
  267. package/dist/context/context/context-state.js +0 -26
  268. package/dist/context/context/context-state.js.map +0 -1
  269. package/dist/context/context/create-browser-context.d.ts +0 -41
  270. package/dist/context/context/create-browser-context.d.ts.map +0 -1
  271. package/dist/context/context/create-browser-context.js +0 -61
  272. package/dist/context/context/create-browser-context.js.map +0 -1
  273. package/dist/context/context/create-headless-context.d.ts +0 -9
  274. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  275. package/dist/context/context/create-headless-context.js +0 -43
  276. package/dist/context/context/create-headless-context.js.map +0 -1
  277. package/dist/context/context/device-pixels.d.ts +0 -25
  278. package/dist/context/context/device-pixels.d.ts.map +0 -1
  279. package/dist/context/context/device-pixels.js +0 -103
  280. package/dist/context/context/device-pixels.js.map +0 -1
  281. package/dist/context/context/webgl-checks.d.ts +0 -13
  282. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  283. package/dist/context/context/webgl-checks.js +0 -34
  284. package/dist/context/context/webgl-checks.js.map +0 -1
  285. package/dist/context/debug/spector.js.map +0 -1
  286. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  287. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  288. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  289. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  290. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  291. package/dist/context/polyfill/get-parameter-polyfill.js +0 -91
  292. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  293. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  294. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  295. package/dist/context/polyfill/polyfill-context.js +0 -91
  296. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  297. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  298. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  299. package/dist/context/polyfill/polyfill-table.js +0 -160
  300. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  301. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  302. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  303. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -335
  304. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  305. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  306. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  307. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  308. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  309. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  310. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  311. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  312. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  313. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  314. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  315. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  316. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  317. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  318. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  319. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  320. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  321. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  323. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  324. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  325. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  326. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  327. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  328. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  329. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  330. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  331. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  332. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  333. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  334. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  335. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  336. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  337. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  338. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  339. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  340. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  341. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  342. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  343. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  345. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  347. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  349. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  351. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  353. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  354. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  355. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  356. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  357. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  358. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  359. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  360. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  361. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  362. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  363. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  364. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  365. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  366. package/dist/es5/adapter/webgl-device.js +0 -463
  367. package/dist/es5/adapter/webgl-device.js.map +0 -1
  368. package/dist/es5/bundle.js +0 -7
  369. package/dist/es5/bundle.js.map +0 -1
  370. package/dist/es5/classic/accessor.js +0 -181
  371. package/dist/es5/classic/accessor.js.map +0 -1
  372. package/dist/es5/classic/buffer.js +0 -478
  373. package/dist/es5/classic/buffer.js.map +0 -1
  374. package/dist/es5/classic/typed-array-utils.js +0 -126
  375. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  376. package/dist/es5/context/context/context-state.js +0 -31
  377. package/dist/es5/context/context/context-state.js.map +0 -1
  378. package/dist/es5/context/context/create-browser-context.js +0 -83
  379. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  380. package/dist/es5/context/context/create-headless-context.js +0 -60
  381. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  382. package/dist/es5/context/context/device-pixels.js +0 -121
  383. package/dist/es5/context/context/device-pixels.js.map +0 -1
  384. package/dist/es5/context/context/webgl-checks.js +0 -54
  385. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  386. package/dist/es5/context/debug/spector.js +0 -133
  387. package/dist/es5/context/debug/spector.js.map +0 -1
  388. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  389. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  390. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  391. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  392. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  393. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  394. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  395. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  396. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  397. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  398. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  399. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  400. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  401. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  402. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  403. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  404. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  405. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  406. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  407. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  408. package/dist/es5/index.js +0 -290
  409. package/dist/es5/index.js.map +0 -1
  410. package/dist/es5/init.js +0 -10
  411. package/dist/es5/init.js.map +0 -1
  412. package/dist/es5/types/webgl.js +0 -6
  413. package/dist/es5/types/webgl.js.map +0 -1
  414. package/dist/es5/types.js +0 -2
  415. package/dist/es5/types.js.map +0 -1
  416. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  417. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  418. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  419. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  420. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  421. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  422. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  423. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  424. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  425. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  426. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  427. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  428. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  429. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  430. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  431. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  432. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  433. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  434. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  435. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  436. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  437. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  438. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  439. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  440. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  441. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  442. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  443. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  444. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  445. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  446. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  447. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  448. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  449. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  450. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  451. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  453. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  455. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  457. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  459. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  460. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  461. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  462. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  463. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  464. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  465. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  466. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  467. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  468. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  469. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  470. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  471. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  472. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  473. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  474. package/dist/esm/adapter/webgl-device.js +0 -337
  475. package/dist/esm/adapter/webgl-device.js.map +0 -1
  476. package/dist/esm/bundle.js +0 -5
  477. package/dist/esm/bundle.js.map +0 -1
  478. package/dist/esm/classic/accessor.js +0 -144
  479. package/dist/esm/classic/accessor.js.map +0 -1
  480. package/dist/esm/classic/buffer.js +0 -392
  481. package/dist/esm/classic/buffer.js.map +0 -1
  482. package/dist/esm/classic/typed-array-utils.js +0 -112
  483. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  484. package/dist/esm/context/context/context-state.js +0 -26
  485. package/dist/esm/context/context/context-state.js.map +0 -1
  486. package/dist/esm/context/context/create-browser-context.js +0 -61
  487. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  488. package/dist/esm/context/context/create-headless-context.js +0 -43
  489. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  490. package/dist/esm/context/context/device-pixels.js +0 -103
  491. package/dist/esm/context/context/device-pixels.js.map +0 -1
  492. package/dist/esm/context/context/webgl-checks.js +0 -34
  493. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  494. package/dist/esm/context/debug/spector.js +0 -76
  495. package/dist/esm/context/debug/spector.js.map +0 -1
  496. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  497. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  498. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  499. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  500. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  501. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  502. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  503. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  504. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  505. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  506. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  507. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  508. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  509. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  510. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  511. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  512. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  513. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  514. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  515. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  516. package/dist/esm/index.js +0 -28
  517. package/dist/esm/index.js.map +0 -1
  518. package/dist/esm/init.js +0 -4
  519. package/dist/esm/init.js.map +0 -1
  520. package/dist/esm/types/webgl.js +0 -2
  521. package/dist/esm/types/webgl.js.map +0 -1
  522. package/dist/esm/types.js +0 -2
  523. package/dist/esm/types.js.map +0 -1
  524. package/dist/index.js.map +0 -1
  525. package/dist/init.d.ts +0 -2
  526. package/dist/init.d.ts.map +0 -1
  527. package/dist/init.js +0 -4
  528. package/dist/init.js.map +0 -1
  529. package/dist/types/webgl.d.ts +0 -145
  530. package/dist/types/webgl.d.ts.map +0 -1
  531. package/dist/types/webgl.js +0 -2
  532. package/dist/types/webgl.js.map +0 -1
  533. package/dist/types.js.map +0 -1
  534. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  535. package/src/adapter/device-helpers/device-features.ts +0 -158
  536. package/src/adapter/device-helpers/device-limits.ts +0 -153
  537. package/src/adapter/device-helpers/get-device-info.ts +0 -49
  538. package/src/adapter/device-helpers/is-old-ie.ts +0 -11
  539. package/src/adapter/helpers/attribute-utils.ts +0 -61
  540. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  541. package/src/bundle.ts +0 -4
  542. package/src/classic/buffer.ts +0 -474
  543. package/src/context/context/context-state.ts +0 -41
  544. package/src/context/context/create-browser-context.ts +0 -118
  545. package/src/context/context/create-headless-context.ts +0 -48
  546. package/src/context/context/device-pixels.ts +0 -158
  547. package/src/context/context/webgl-checks.ts +0 -49
  548. package/src/context/polyfill/get-parameter-polyfill.ts +0 -118
  549. package/src/context/polyfill/polyfill-context.ts +0 -97
  550. package/src/context/polyfill/polyfill-table.ts +0 -162
  551. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -360
  552. package/src/init.ts +0 -4
  553. package/src/types/webgl.ts +0 -284
@@ -1,4 +1,7 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
2
5
  // Texture class.
3
6
  // @todo
4
7
  // - [ ] cube texture init params
@@ -7,39 +10,61 @@
7
10
  import {
8
11
  Device,
9
12
  TextureProps,
13
+ TextureViewProps,
10
14
  Sampler,
11
15
  SamplerProps,
12
16
  SamplerParameters,
13
- TypedArray,
14
- isObjectEmpty
15
- } from '@luma.gl/api';
16
- import {Texture, cast, log, assert, isPowerOfTwo, loadImage} from '@luma.gl/api';
17
- import GL from '@luma.gl/constants';
18
- import type {GLSamplerParameters} from '../../types/webgl';
19
- import {withParameters} from '../../context/state-tracker/with-parameters';
17
+ TypedArray
18
+ } from '@luma.gl/core';
19
+ import {Texture, log, assert, loadImage, isObjectEmpty} from '@luma.gl/core';
20
+ import {GL, GLSamplerParameters} from '@luma.gl/constants';
21
+ import {withGLParameters} from '../../context/state-tracker/with-parameters';
20
22
  import {
21
- getWebGLTextureFormat,
23
+ convertTextureFormatToGL,
22
24
  getWebGLTextureParameters,
23
25
  getTextureFormatBytesPerPixel
24
26
  } from '../converters/texture-formats';
25
- import {
26
- convertSamplerParametersToWebGL,
27
- updateSamplerParametersForNPOT
28
- } from '../converters/sampler-parameters';
29
- import WebGLDevice from '../webgl-device';
30
- import WEBGLBuffer from './webgl-buffer';
31
- import WEBGLSampler from './webgl-sampler';
32
-
33
- export type {TextureProps};
34
-
35
- export type TextureSourceData =
36
- TypedArray |
37
- ImageData |
38
- HTMLImageElement |
39
- HTMLCanvasElement |
40
- ImageBitmap |
41
- HTMLVideoElement
42
- ;
27
+ import {convertSamplerParametersToWebGL} from '../converters/sampler-parameters';
28
+ import {WebGLDevice} from '../webgl-device';
29
+ import {WEBGLBuffer} from './webgl-buffer';
30
+ import {WEBGLSampler} from './webgl-sampler';
31
+ import {WEBGLTextureView} from './webgl-texture-view';
32
+
33
+ export type WEBGLTextureProps = TextureProps & {
34
+ /** @deprecated use props.sampler */
35
+ parameters?: Record<number, number>;
36
+ /** @deprecated use props.data */
37
+ pixels?: any;
38
+ /** @deprecated use props.format */
39
+ dataFormat?: number | null;
40
+ /** @deprecated rarely supported */
41
+ border?: number;
42
+ /** @deprecated WebGL only. */
43
+ pixelStore?: object;
44
+ /** @deprecated WebGL only. */
45
+ textureUnit?: number;
46
+ /** @deprecated WebGL only. Use dimension. */
47
+ target?: number;
48
+ };
49
+
50
+ export const DEFAULT_WEBGL_TEXTURE_PROPS = {
51
+ // deprecated
52
+ parameters: {},
53
+ pixelStore: {},
54
+ pixels: null,
55
+ border: 0,
56
+ dataFormat: undefined!,
57
+ textureUnit: undefined!,
58
+ target: undefined!
59
+ };
60
+
61
+ export type TextureSourceData =
62
+ | TypedArray
63
+ | ImageData
64
+ | HTMLImageElement
65
+ | HTMLCanvasElement
66
+ | ImageBitmap
67
+ | HTMLVideoElement;
43
68
 
44
69
  type SetImageDataOptions = {
45
70
  target?: number;
@@ -48,7 +73,7 @@ type SetImageDataOptions = {
48
73
  width?: number;
49
74
  height?: number;
50
75
  depth?: number;
51
- format?: any;
76
+ glFormat?: GL;
52
77
  type?: any;
53
78
  offset?: number;
54
79
  data: any; // TextureSourceData;
@@ -56,7 +81,7 @@ type SetImageDataOptions = {
56
81
  parameters?: Record<GL, any>;
57
82
  /** @deprecated */
58
83
  pixels?: any;
59
- }
84
+ };
60
85
 
61
86
  /**
62
87
  * @param {*} pixels, data -
@@ -87,7 +112,7 @@ type SetSubImageDataOptions = {
87
112
  width?: number;
88
113
  height?: number;
89
114
  depth?: number;
90
- format?: any;
115
+ glFormat?: any;
91
116
  type?: any;
92
117
  offset?: number;
93
118
  data: any;
@@ -112,9 +137,8 @@ type SetImageData3DOptions = {
112
137
  parameters?: Record<GL, any>;
113
138
  };
114
139
 
115
-
116
140
  // Polyfill
117
- export default class WEBGLTexture extends Texture {
141
+ export class WEBGLTexture extends Texture<WEBGLTextureProps> {
118
142
  // TODO - remove?
119
143
  static FACES: number[] = [
120
144
  GL.TEXTURE_CUBE_MAP_POSITIVE_X,
@@ -127,17 +151,17 @@ export default class WEBGLTexture extends Texture {
127
151
 
128
152
  readonly MAX_ATTRIBUTES: number;
129
153
  readonly device: WebGLDevice;
130
- readonly gl: WebGLRenderingContext;
131
- readonly gl2: WebGL2RenderingContext | null;
154
+ readonly gl: WebGL2RenderingContext;
132
155
  readonly handle: WebGLTexture;
133
156
 
134
- data;
157
+ // (TODO - currently unused in WebGL, but WebGL 2 does support sampler objects) */
158
+ sampler: WEBGLSampler = undefined;
135
159
 
136
- width: number = undefined;
137
- height: number = undefined;
138
- depth: number = undefined;
160
+ view: WEBGLTextureView = undefined;
139
161
 
140
- format: GL = undefined;
162
+ // data;
163
+
164
+ glFormat: GL = undefined;
141
165
  type: GL = undefined;
142
166
  dataFormat: GL = undefined;
143
167
  mipmaps: boolean = undefined;
@@ -154,9 +178,6 @@ export default class WEBGLTexture extends Texture {
154
178
  target: GL;
155
179
  textureUnit: number = undefined;
156
180
 
157
- /** Sampler object (currently unused) */
158
- sampler: WEBGLSampler = undefined;
159
-
160
181
  /**
161
182
  * Program.draw() checks the loaded flag of all textures to avoid
162
183
  * Textures that are still loading from promises
@@ -169,16 +190,15 @@ export default class WEBGLTexture extends Texture {
169
190
  lastTime: number;
170
191
  };
171
192
 
172
- constructor(device: Device, props: TextureProps) {
173
- super(device, {format: GL.RGBA, ...props});
193
+ constructor(device: Device, props: WEBGLTextureProps) {
194
+ super(device, {...DEFAULT_WEBGL_TEXTURE_PROPS, format: 'rgba8unorm', ...props});
174
195
 
175
- this.device = cast<WebGLDevice>(device);
196
+ this.device = device as WebGLDevice;
176
197
  this.gl = this.device.gl;
177
- this.gl2 = this.device.gl2;
178
198
  this.handle = this.props.handle || this.gl.createTexture();
179
- // @ts-expect-error Per SPECTOR docs
180
- this.handle.__SPECTOR_Metadata = {...this.props, data: typeof this.props.data}; // {name: this.props.id};
199
+ this.device.setSpectorMetadata(this.handle, {...this.props, data: typeof this.props.data}); // {name: this.props.id};
181
200
 
201
+ this.glFormat = GL.RGBA;
182
202
  this.target = getWebGLTextureTarget(this.props);
183
203
 
184
204
  // Program.draw() checks the loaded flag of all textures
@@ -194,7 +214,7 @@ export default class WEBGLTexture extends Texture {
194
214
  Object.seal(this);
195
215
  }
196
216
 
197
- destroy(): void {
217
+ override destroy(): void {
198
218
  if (this.handle) {
199
219
  this.gl.deleteTexture(this.handle);
200
220
  this.removeStats();
@@ -204,12 +224,16 @@ export default class WEBGLTexture extends Texture {
204
224
  }
205
225
  }
206
226
 
207
- toString(): string {
227
+ override toString(): string {
208
228
  return `Texture(${this.id},${this.width}x${this.height})`;
209
229
  }
210
230
 
231
+ createView(props: TextureViewProps): WEBGLTextureView {
232
+ return new WEBGLTextureView(this.device, {...props, texture: this});
233
+ }
234
+
211
235
  // eslint-disable-next-line max-statements
212
- initialize(props: TextureProps = {}): this {
236
+ initialize(props: WEBGLTextureProps = {}): this {
213
237
  // Cube textures
214
238
  if (this.props.dimension === 'cube') {
215
239
  return this.initializeCube(props);
@@ -218,7 +242,7 @@ export default class WEBGLTexture extends Texture {
218
242
  let data = props.data;
219
243
 
220
244
  if (data instanceof Promise) {
221
- data.then((resolvedImageData) =>
245
+ data.then(resolvedImageData =>
222
246
  this.initialize(
223
247
  Object.assign({}, props, {
224
248
  pixels: resolvedImageData,
@@ -238,10 +262,9 @@ export default class WEBGLTexture extends Texture {
238
262
  return this;
239
263
  }
240
264
 
241
- let {parameters = {} as Record<GL, any>} = props;
265
+ const {parameters = {} as Record<GL, any>} = props;
242
266
 
243
- const {
244
- pixels = null, recreate = false, pixelStore = {}, textureUnit = undefined} = props;
267
+ const {pixels = null, pixelStore = {}, textureUnit = undefined, mipmaps = true} = props;
245
268
 
246
269
  // pixels variable is for API compatibility purpose
247
270
  if (!data) {
@@ -251,9 +274,11 @@ export default class WEBGLTexture extends Texture {
251
274
  data = pixels;
252
275
  }
253
276
 
254
- let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;
277
+ let {width, height, dataFormat, type, compressed = false} = props;
255
278
  const {depth = 0} = props;
256
279
 
280
+ const glFormat = convertTextureFormatToGL(props.format);
281
+
257
282
  // Deduce width and height
258
283
  ({width, height, compressed, dataFormat, type} = this._deduceParameters({
259
284
  format: props.format,
@@ -265,13 +290,11 @@ export default class WEBGLTexture extends Texture {
265
290
  height
266
291
  }));
267
292
 
268
- const format = getWebGLTextureFormat(this.gl, props.format);
269
-
270
293
  // Store opts for accessors
271
294
  this.width = width;
272
295
  this.height = height;
273
- this.depth = depth;
274
- this.format = format;
296
+ // this.depth = depth;
297
+ this.glFormat = glFormat;
275
298
  this.type = type;
276
299
  this.dataFormat = dataFormat;
277
300
  this.textureUnit = textureUnit;
@@ -281,11 +304,6 @@ export default class WEBGLTexture extends Texture {
281
304
  this.gl.bindTexture(this.target, this.handle);
282
305
  }
283
306
 
284
- if (mipmaps && this.device.isWebGL1 && isNPOT(this.width, this.height)) {
285
- log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaps`)();
286
- mipmaps = false;
287
- }
288
-
289
307
  this.mipmaps = mipmaps;
290
308
 
291
309
  this.setImageData({
@@ -293,10 +311,10 @@ export default class WEBGLTexture extends Texture {
293
311
  width,
294
312
  height,
295
313
  depth,
296
- format,
314
+ format: glFormat,
297
315
  type,
298
316
  dataFormat,
299
- // @ts-expect-error
317
+ // @ts-expect-error
300
318
  parameters: pixelStore,
301
319
  compressed
302
320
  });
@@ -305,14 +323,12 @@ export default class WEBGLTexture extends Texture {
305
323
  this.setSampler(props.sampler);
306
324
  this._setSamplerParameters(parameters);
307
325
 
308
- if (mipmaps) {
326
+ this.view = this.createView({...this.props, mipLevelCount: 1, arrayLayerCount: 1});
327
+
328
+ if (mipmaps && this.device.isTextureFormatFilterable(props.format)) {
309
329
  this.generateMipmap();
310
330
  }
311
331
 
312
- // TODO - Store data to enable auto recreate on context loss
313
- if (recreate) {
314
- this.data = data;
315
- }
316
332
  if (isVideo) {
317
333
  this._video = {
318
334
  video: data as HTMLVideoElement,
@@ -325,8 +341,8 @@ export default class WEBGLTexture extends Texture {
325
341
  return this;
326
342
  }
327
343
 
328
- initializeCube(props?: TextureProps): this {
329
- const {mipmaps = true, parameters = {} as Record<GL, any>} = props;
344
+ initializeCube(props?: WEBGLTextureProps): this {
345
+ const {mipmaps = true, parameters = {} as Record<GL, any>} = props;
330
346
 
331
347
  // Store props for accessors
332
348
  // this.props = props;
@@ -357,7 +373,6 @@ export default class WEBGLTexture extends Texture {
357
373
  samplerProps = sampler as SamplerProps;
358
374
  }
359
375
 
360
- // TODO - technically, this is only needed in WebGL1. In WebGL2 we could always use the sampler.
361
376
  const parameters = convertSamplerParametersToWebGL(samplerProps);
362
377
  this._setSamplerParameters(parameters);
363
378
  return this;
@@ -367,7 +382,7 @@ export default class WEBGLTexture extends Texture {
367
382
  * If size has changed, reinitializes with current format
368
383
  * @note note clears image and mipmaps
369
384
  */
370
- resize(options: {height: number, width: number, mipmaps?: boolean}): this {
385
+ resize(options: {height: number; width: number; mipmaps?: boolean}): this {
371
386
  const {height, width, mipmaps = false} = options;
372
387
  if (width !== this.width || height !== this.height) {
373
388
  return this.initialize({
@@ -383,7 +398,7 @@ export default class WEBGLTexture extends Texture {
383
398
  }
384
399
 
385
400
  /** Update external texture (video frame) */
386
- update(): this {
401
+ update(): void {
387
402
  if (this._video) {
388
403
  const {video, parameters, lastTime} = this._video;
389
404
  // @ts-expect-error
@@ -403,15 +418,10 @@ export default class WEBGLTexture extends Texture {
403
418
 
404
419
  // Call to regenerate mipmaps after modifying texture(s)
405
420
  generateMipmap(params = {}): this {
406
- if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
407
- log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();
408
- return this;
409
- }
410
-
411
421
  this.mipmaps = true;
412
422
 
413
423
  this.gl.bindTexture(this.target, this.handle);
414
- withParameters(this.gl, params, () => {
424
+ withGLParameters(this.gl, params, () => {
415
425
  this.gl.generateMipmap(this.target);
416
426
  });
417
427
  this.gl.bindTexture(this.target, null);
@@ -440,7 +450,7 @@ export default class WEBGLTexture extends Texture {
440
450
  */
441
451
  // eslint-disable-next-line max-statements, complexity
442
452
  setImageData(options: SetImageDataOptions) {
443
- if (this.props.dimension === '3d') {
453
+ if (this.props.dimension === '3d' || this.props.dimension === '2d-array') {
444
454
  return this.setImageData3D(options);
445
455
  }
446
456
 
@@ -450,9 +460,9 @@ export default class WEBGLTexture extends Texture {
450
460
  target = this.target,
451
461
  pixels = null,
452
462
  level = 0,
453
- format = this.format,
463
+ glFormat = this.glFormat,
454
464
  offset = 0,
455
- parameters = {} as Record<GL, any>
465
+ parameters = {} as Record<GL, any>
456
466
  } = options;
457
467
 
458
468
  let {
@@ -485,63 +495,63 @@ export default class WEBGLTexture extends Texture {
485
495
  let dataType = null;
486
496
  ({data, dataType} = this._getDataType({data, compressed}));
487
497
 
488
- let gl2;
489
-
490
- withParameters(this.gl, parameters, () => {
498
+ withGLParameters(this.gl, parameters, () => {
491
499
  switch (dataType) {
492
500
  case 'null':
493
- gl.texImage2D(target, level, format, width, height, 0 /*border*/, dataFormat, type, data);
501
+ gl.texImage2D(
502
+ target,
503
+ level,
504
+ glFormat,
505
+ width,
506
+ height,
507
+ 0 /* border*/,
508
+ dataFormat,
509
+ type,
510
+ data
511
+ );
494
512
  break;
495
513
  case 'typed-array':
496
- // Looks like this assert is not necessary, as offset is ignored under WebGL1
497
- // assert((offset === 0 || this.device.isWebGL2), 'offset supported in WebGL2 only');
498
514
  gl.texImage2D(
499
515
  target,
500
516
  level,
501
- format,
517
+ glFormat,
502
518
  width,
503
519
  height,
504
520
  0, // border (must be 0)
505
521
  dataFormat,
506
522
  type,
507
523
  data,
508
- // @ts-expect-error
509
524
  offset
510
525
  );
511
526
  break;
512
527
  case 'buffer':
513
528
  // WebGL2 enables creating textures directly from a WebGL buffer
514
- gl2 = this.device.assertWebGL2();
515
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);
516
- gl2.texImage2D(
529
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);
530
+ this.device.gl.texImage2D(
517
531
  target,
518
532
  level,
519
- format,
533
+ glFormat,
520
534
  width,
521
535
  height,
522
- 0 /*border*/,
536
+ 0 /* border*/,
523
537
  dataFormat,
524
538
  type,
525
539
  offset
526
540
  );
527
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
541
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
528
542
  break;
529
543
  case 'browser-object':
530
- if (this.device.isWebGL2) {
531
- gl.texImage2D(
532
- target,
533
- level,
534
- format,
535
- width,
536
- height,
537
- 0 /*border*/,
538
- dataFormat,
539
- type,
540
- data
541
- );
542
- } else {
543
- gl.texImage2D(target, level, format, dataFormat, type, data);
544
- }
544
+ gl.texImage2D(
545
+ target,
546
+ level,
547
+ glFormat,
548
+ width,
549
+ height,
550
+ 0 /* border*/,
551
+ dataFormat,
552
+ type,
553
+ data
554
+ );
545
555
  break;
546
556
  case 'compressed':
547
557
  for (const [levelIndex, levelData] of data.entries()) {
@@ -565,7 +575,7 @@ export default class WEBGLTexture extends Texture {
565
575
  if (data && data.byteLength) {
566
576
  this.trackAllocatedMemory(data.byteLength, 'Texture');
567
577
  } else {
568
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
578
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format);
569
579
  this.trackAllocatedMemory(this.width * this.height * bytesPerPixel, 'Texture');
570
580
  }
571
581
 
@@ -588,7 +598,7 @@ export default class WEBGLTexture extends Texture {
588
598
  width = this.width,
589
599
  height = this.height,
590
600
  level = 0,
591
- format = this.format,
601
+ glFormat = this.glFormat,
592
602
  type = this.type,
593
603
  dataFormat = this.dataFormat,
594
604
  compressed = false,
@@ -627,29 +637,23 @@ export default class WEBGLTexture extends Texture {
627
637
 
628
638
  this.gl.bindTexture(this.target, this.handle);
629
639
 
630
- withParameters(this.gl, parameters, () => {
640
+ withGLParameters(this.gl, parameters, () => {
631
641
  // TODO - x,y parameters
632
642
  if (compressed) {
633
- this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);
643
+ this.gl.compressedTexSubImage2D(target, level, x, y, width, height, glFormat, data);
634
644
  } else if (data === null) {
635
645
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
636
646
  } else if (ArrayBuffer.isView(data)) {
637
- // const gl2 = this.device.assertWebGL2();
638
- // @ts-expect-error last offset parameter is ignored under WebGL1
639
647
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);
640
648
  } else if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
641
649
  // WebGL2 allows us to create texture directly from a WebGL buffer
642
- const gl2 = this.device.assertWebGL2();
643
650
  // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER
644
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);
645
- gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);
646
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
647
- } else if (this.device.isWebGL2) {
648
- // Assume data is a browser supported object (ImageData, Canvas, ...)
649
- const gl2 = this.device.assertWebGL2();
650
- gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);
651
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);
652
+ this.device.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);
653
+ this.device.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
651
654
  } else {
652
- this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);
655
+ // Assume data is a browser supported object (ImageData, Canvas, ...)
656
+ this.device.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);
653
657
  }
654
658
  });
655
659
 
@@ -724,12 +728,12 @@ export default class WEBGLTexture extends Texture {
724
728
 
725
729
  // HELPER METHODS
726
730
 
727
- _deduceParameters(opts: TextureProps) {
731
+ _deduceParameters(opts: WEBGLTextureProps) {
728
732
  const {format, data} = opts;
729
733
  let {width, height, dataFormat, type, compressed} = opts;
730
734
 
731
735
  // Deduce format and type from format
732
- const parameters = getWebGLTextureParameters(this.gl, format);
736
+ const parameters = getWebGLTextureParameters(format);
733
737
  dataFormat = dataFormat || parameters.dataFormat;
734
738
  type = type || parameters.type;
735
739
  compressed = compressed || parameters.compressed;
@@ -802,7 +806,7 @@ export default class WEBGLTexture extends Texture {
802
806
  // ... }
803
807
 
804
808
  const resolvedFaces = await Promise.all(
805
- WEBGLTexture.FACES.map((face) => {
809
+ WEBGLTexture.FACES.map(face => {
806
810
  const facePixels = imageDataMap[face];
807
811
  return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);
808
812
  })
@@ -819,7 +823,7 @@ export default class WEBGLTexture extends Texture {
819
823
  resolvedFaces[index].forEach((image, lodLevel) => {
820
824
  // TODO: adjust width & height for LOD!
821
825
  if (width && height) {
822
- gl.texImage2D(face, lodLevel, format, width, height, 0 /*border*/, format, type, image);
826
+ gl.texImage2D(face, lodLevel, format, width, height, 0 /* border*/, format, type, image);
823
827
  } else {
824
828
  gl.texImage2D(face, lodLevel, format, format, type, image);
825
829
  }
@@ -848,7 +852,7 @@ export default class WEBGLTexture extends Texture {
848
852
 
849
853
  this.bind();
850
854
  if (imageData instanceof Promise) {
851
- imageData.then((resolvedImageData) =>
855
+ imageData.then(resolvedImageData =>
852
856
  this.setImageDataForFace(
853
857
  Object.assign({}, options, {
854
858
  face,
@@ -858,7 +862,7 @@ export default class WEBGLTexture extends Texture {
858
862
  )
859
863
  );
860
864
  } else if (this.width || this.height) {
861
- gl.texImage2D(face, 0, format, width, height, 0 /*border*/, format, type, imageData);
865
+ gl.texImage2D(face, 0, format, width, height, 0 /* border*/, format, type, imageData);
862
866
  } else {
863
867
  gl.texImage2D(face, 0, format, format, type, imageData);
864
868
  }
@@ -885,11 +889,10 @@ export default class WEBGLTexture extends Texture {
885
889
 
886
890
  this.gl.bindTexture(this.target, this.handle);
887
891
 
888
- const webglTextureFormat = getWebGLTextureParameters(this.gl, format);
892
+ const webglTextureFormat = getWebGLTextureParameters(format);
889
893
 
890
- withParameters(this.gl, parameters, () => {
894
+ withGLParameters(this.gl, parameters, () => {
891
895
  if (ArrayBuffer.isView(data)) {
892
- // @ts-expect-error
893
896
  this.gl.texImage3D(
894
897
  this.target,
895
898
  level,
@@ -906,7 +909,6 @@ export default class WEBGLTexture extends Texture {
906
909
 
907
910
  if (data instanceof WEBGLBuffer) {
908
911
  this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);
909
- // @ts-expect-error
910
912
  this.gl.texImage3D(
911
913
  this.target,
912
914
  level,
@@ -925,7 +927,7 @@ export default class WEBGLTexture extends Texture {
925
927
  if (data && data.byteLength) {
926
928
  this.trackAllocatedMemory(data.byteLength, 'Texture');
927
929
  } else {
928
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
930
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format);
929
931
  this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');
930
932
  }
931
933
 
@@ -938,14 +940,8 @@ export default class WEBGLTexture extends Texture {
938
940
 
939
941
  /**
940
942
  * Sets sampler parameters on texture
941
- * @note: Applies NPOT workaround if appropriate
942
943
  */
943
- _setSamplerParameters(parameters: GLSamplerParameters) {
944
- // Work around WebGL1 sampling restrictions on NPOT textures
945
- if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
946
- parameters = updateSamplerParametersForNPOT(parameters);
947
- }
948
-
944
+ _setSamplerParameters(parameters: GLSamplerParameters): void {
949
945
  // NPOT parameters may populate an empty object
950
946
  if (isObjectEmpty(parameters)) {
951
947
  return;
@@ -955,8 +951,8 @@ export default class WEBGLTexture extends Texture {
955
951
 
956
952
  this.gl.bindTexture(this.target, this.handle);
957
953
  for (const [pname, pvalue] of Object.entries(parameters)) {
958
- const param = Number(pname);
959
- let value = pvalue;
954
+ const param = Number(pname) as GL.TEXTURE_MIN_LOD | GL.TEXTURE_MAX_LOD;
955
+ const value = pvalue;
960
956
 
961
957
  // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
962
958
  // For now, pick the float version for parameters specified as GLfloat.
@@ -972,30 +968,7 @@ export default class WEBGLTexture extends Texture {
972
968
  }
973
969
  }
974
970
  this.gl.bindTexture(this.target, null);
975
- return this;
976
- }
977
-
978
- /** @deprecated For LegacyTexture subclass */
979
- protected _getWebGL1NPOTParameterOverride(pname: number, value: number): number {
980
- // NOTE: Apply NPOT workaround
981
- const npot = this.device.isWebGL1 && isNPOT(this.width, this.height);
982
- if (npot) {
983
- switch (pname) {
984
- case GL.TEXTURE_MIN_FILTER:
985
- if (value !== GL.LINEAR && value !== GL.NEAREST) {
986
- // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();
987
- return GL.LINEAR;
988
- }
989
- break;
990
- case GL.TEXTURE_WRAP_S:
991
- case GL.TEXTURE_WRAP_T:
992
- // if (value !== GL.CLAMP_TO_EDGE) { log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)(); }
993
- return GL.CLAMP_TO_EDGE;
994
- default:
995
- break;
996
- }
997
- }
998
- return value;
971
+ return;
999
972
  }
1000
973
  }
1001
974
 
@@ -1021,16 +994,6 @@ function getWebGLTextureTarget(props: TextureProps) {
1021
994
  }
1022
995
  }
1023
996
 
1024
- function isNPOT(width: number, height: number): boolean {
1025
- // Width and height not available, avoid classifying as NPOT texture
1026
- if (!width || !height) {
1027
- return false;
1028
- }
1029
- return !isPowerOfTwo(width) || !isPowerOfTwo(height);
1030
- }
1031
-
1032
997
  function logParameters(parameters: Record<number, GL | number>) {
1033
998
  log.log(1, 'texture sampler parameters', parameters)();
1034
- for (const [pname, pvalue] of Object.entries(parameters)) {
1035
- }
1036
999
  }