@luma.gl/webgl 9.0.0-alpha.8 → 9.0.0-beta.1

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 +12 -3
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +89 -74
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +4 -10
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +29 -180
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +306 -343
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +9 -25
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +49 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  42. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  43. package/dist/adapter/helpers/get-shader-layout.js +58 -138
  44. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  48. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  50. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  51. package/dist/adapter/helpers/set-uniform.js +51 -82
  52. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  54. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  55. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  56. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  57. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  58. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  59. package/dist/adapter/objects/constants-to-keys.js +2 -29
  60. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  62. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  63. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  64. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  65. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  66. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-resource.js +26 -83
  68. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  69. package/dist/adapter/resources/webgl-buffer.d.ts +19 -14
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +67 -101
  72. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  74. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  76. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  78. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  80. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  81. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  82. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -25
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -175
  85. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  86. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  87. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-render-pass.js +98 -12
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +34 -20
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +110 -293
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  95. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-sampler.js +11 -21
  97. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  98. package/dist/adapter/resources/webgl-shader.d.ts +5 -5
  99. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-shader.js +18 -44
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +51 -31
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +123 -244
  105. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  106. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  107. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  108. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  109. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +12 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +92 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +205 -158
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +26 -52
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/clear.d.ts +22 -0
  127. package/dist/classic/clear.d.ts.map +1 -0
  128. package/dist/classic/clear.js +88 -0
  129. package/dist/classic/clear.js.map +1 -0
  130. package/dist/classic/copy-and-blit.d.ts +62 -0
  131. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  132. package/dist/classic/copy-and-blit.js +192 -0
  133. package/dist/classic/copy-and-blit.js.map +1 -0
  134. package/dist/classic/format-utils.d.ts +3 -0
  135. package/dist/classic/format-utils.d.ts.map +1 -0
  136. package/dist/classic/format-utils.js +37 -0
  137. package/dist/classic/format-utils.js.map +1 -0
  138. package/dist/classic/typed-array-utils.d.ts +17 -17
  139. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  140. package/dist/classic/typed-array-utils.js +18 -39
  141. package/dist/classic/typed-array-utils.js.map +1 -1
  142. package/dist/context/context/create-browser-context.d.ts +17 -18
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  144. package/dist/context/context/create-browser-context.js +11 -19
  145. package/dist/context/context/create-browser-context.js.map +1 -1
  146. package/dist/context/context/create-headless-context.d.ts +1 -1
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  148. package/dist/context/context/create-headless-context.js +6 -7
  149. package/dist/context/context/create-headless-context.js.map +1 -1
  150. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  151. package/dist/context/context/webgl-checks.js +1 -4
  152. package/dist/context/context/webgl-checks.js.map +1 -1
  153. package/dist/context/debug/spector.d.ts +1 -2
  154. package/dist/context/debug/spector.d.ts.map +1 -1
  155. package/dist/context/debug/spector.js +7 -19
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +18 -41
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +5 -5
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -17
  164. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  166. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  168. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  169. package/dist/context/polyfill/context-data.d.ts +13 -0
  170. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  171. package/dist/context/polyfill/context-data.js +12 -0
  172. package/dist/context/polyfill/context-data.js.map +1 -0
  173. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  174. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  175. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  176. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  178. package/dist/context/polyfill/polyfill-context.js +27 -31
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +7 -7
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +17 -40
  183. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  187. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +25 -61
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +8 -10
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +9344 -0
  198. package/dist/index.cjs +6556 -0
  199. package/dist/index.d.ts +23 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -27
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +52 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +120 -43
  209. package/src/adapter/converters/sampler-parameters.ts +54 -126
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +265 -192
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +5 -2
  214. package/src/adapter/device-helpers/device-limits.ts +4 -2
  215. package/src/adapter/device-helpers/get-device-info.ts +72 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +31 -24
  218. package/src/adapter/helpers/get-shader-layout.ts +87 -131
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  220. package/src/adapter/helpers/set-uniform.ts +39 -35
  221. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  222. package/src/adapter/objects/constants-to-keys.ts +6 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  224. package/src/adapter/objects/webgl-resource.ts +16 -23
  225. package/src/adapter/resources/webgl-buffer.ts +101 -106
  226. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  227. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  228. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  229. package/src/adapter/resources/webgl-framebuffer.ts +86 -133
  230. package/src/adapter/resources/webgl-render-pass.ts +165 -4
  231. package/src/adapter/resources/webgl-render-pipeline.ts +209 -205
  232. package/src/adapter/resources/webgl-sampler.ts +12 -8
  233. package/src/adapter/resources/webgl-shader.ts +32 -27
  234. package/src/adapter/resources/webgl-texture.ts +117 -91
  235. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  236. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  237. package/src/adapter/webgl-canvas-context.ts +18 -13
  238. package/src/adapter/webgl-device.ts +327 -92
  239. package/src/classic/accessor.ts +8 -5
  240. package/src/classic/clear.ts +113 -0
  241. package/src/classic/copy-and-blit.ts +312 -0
  242. package/src/classic/format-utils.ts +46 -0
  243. package/src/classic/typed-array-utils.ts +19 -27
  244. package/src/context/context/create-browser-context.ts +53 -31
  245. package/src/context/context/create-headless-context.ts +5 -2
  246. package/src/context/context/webgl-checks.ts +3 -1
  247. package/src/context/debug/spector.ts +8 -5
  248. package/src/context/debug/webgl-developer-tools.ts +26 -17
  249. package/src/context/parameters/unified-parameter-api.ts +15 -9
  250. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  251. package/src/context/polyfill/context-data.ts +30 -0
  252. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  253. package/src/context/polyfill/polyfill-context.ts +15 -8
  254. package/src/context/polyfill/polyfill-table.ts +20 -15
  255. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  256. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  257. package/src/context/state-tracker/track-context-state.ts +13 -10
  258. package/src/context/state-tracker/with-parameters.ts +13 -4
  259. package/src/index.ts +65 -39
  260. package/src/types.ts +5 -0
  261. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  263. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  264. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  265. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  266. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  267. package/dist/adapter/helpers/attribute-utils.js +0 -81
  268. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  270. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  271. package/dist/adapter/helpers/uniforms.js +0 -99
  272. package/dist/adapter/helpers/uniforms.js.map +0 -1
  273. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  275. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  276. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  277. package/dist/bundle.d.ts +0 -2
  278. package/dist/bundle.d.ts.map +0 -1
  279. package/dist/bundle.js +0 -5
  280. package/dist/bundle.js.map +0 -1
  281. package/dist/classic/buffer.d.ts +0 -95
  282. package/dist/classic/buffer.d.ts.map +0 -1
  283. package/dist/classic/buffer.js +0 -392
  284. package/dist/classic/buffer.js.map +0 -1
  285. package/dist/context/context/context-state.d.ts +0 -18
  286. package/dist/context/context/context-state.d.ts.map +0 -1
  287. package/dist/context/context/context-state.js +0 -26
  288. package/dist/context/context/context-state.js.map +0 -1
  289. package/dist/context/context/device-pixels.d.ts +0 -25
  290. package/dist/context/context/device-pixels.d.ts.map +0 -1
  291. package/dist/context/context/device-pixels.js +0 -103
  292. package/dist/context/context/device-pixels.js.map +0 -1
  293. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  294. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  295. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  296. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  297. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  298. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  299. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  300. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  301. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  302. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  303. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  304. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  305. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  306. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  307. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  308. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  309. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  310. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  311. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  312. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  313. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  314. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  315. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  316. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  317. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  318. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  319. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  320. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  321. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  322. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  323. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  324. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  325. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  326. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  327. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  328. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  329. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  330. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  331. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  332. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  333. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  334. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  335. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  336. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  338. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  339. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  340. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  341. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  342. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  343. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  344. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  345. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  346. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  347. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  348. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  349. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  350. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  351. package/dist/es5/adapter/webgl-device.js +0 -463
  352. package/dist/es5/adapter/webgl-device.js.map +0 -1
  353. package/dist/es5/bundle.js +0 -7
  354. package/dist/es5/bundle.js.map +0 -1
  355. package/dist/es5/classic/accessor.js +0 -181
  356. package/dist/es5/classic/accessor.js.map +0 -1
  357. package/dist/es5/classic/buffer.js +0 -478
  358. package/dist/es5/classic/buffer.js.map +0 -1
  359. package/dist/es5/classic/typed-array-utils.js +0 -126
  360. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  361. package/dist/es5/context/context/context-state.js +0 -31
  362. package/dist/es5/context/context/context-state.js.map +0 -1
  363. package/dist/es5/context/context/create-browser-context.js +0 -83
  364. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  365. package/dist/es5/context/context/create-headless-context.js +0 -60
  366. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  367. package/dist/es5/context/context/device-pixels.js +0 -121
  368. package/dist/es5/context/context/device-pixels.js.map +0 -1
  369. package/dist/es5/context/context/webgl-checks.js +0 -54
  370. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  371. package/dist/es5/context/debug/spector.js +0 -133
  372. package/dist/es5/context/debug/spector.js.map +0 -1
  373. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  374. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  375. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  376. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  377. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  378. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  379. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  380. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  381. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  382. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  383. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  384. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  385. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  386. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  387. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  388. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  389. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  390. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  391. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  392. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  393. package/dist/es5/index.js +0 -290
  394. package/dist/es5/index.js.map +0 -1
  395. package/dist/es5/init.js +0 -10
  396. package/dist/es5/init.js.map +0 -1
  397. package/dist/es5/types/webgl.js +0 -6
  398. package/dist/es5/types/webgl.js.map +0 -1
  399. package/dist/es5/types.js +0 -2
  400. package/dist/es5/types.js.map +0 -1
  401. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  402. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  403. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  404. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  405. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  406. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  407. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  408. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  409. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  410. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  411. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  412. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  413. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  414. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  415. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  416. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  417. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  418. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  419. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  420. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  421. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  422. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  423. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  424. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  425. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  426. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  427. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  428. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  429. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  430. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  431. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  432. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  433. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  434. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  435. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  436. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  437. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  438. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  439. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  440. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  441. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  442. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  443. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  444. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  445. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  446. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  447. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  448. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  449. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  450. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  451. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  452. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  453. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  454. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  455. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  456. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  457. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  458. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  459. package/dist/esm/adapter/webgl-device.js +0 -337
  460. package/dist/esm/adapter/webgl-device.js.map +0 -1
  461. package/dist/esm/bundle.js +0 -5
  462. package/dist/esm/bundle.js.map +0 -1
  463. package/dist/esm/classic/accessor.js +0 -144
  464. package/dist/esm/classic/accessor.js.map +0 -1
  465. package/dist/esm/classic/buffer.js +0 -392
  466. package/dist/esm/classic/buffer.js.map +0 -1
  467. package/dist/esm/classic/typed-array-utils.js +0 -112
  468. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  469. package/dist/esm/context/context/context-state.js +0 -26
  470. package/dist/esm/context/context/context-state.js.map +0 -1
  471. package/dist/esm/context/context/create-browser-context.js +0 -61
  472. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  473. package/dist/esm/context/context/create-headless-context.js +0 -43
  474. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  475. package/dist/esm/context/context/device-pixels.js +0 -103
  476. package/dist/esm/context/context/device-pixels.js.map +0 -1
  477. package/dist/esm/context/context/webgl-checks.js +0 -34
  478. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  479. package/dist/esm/context/debug/spector.js +0 -76
  480. package/dist/esm/context/debug/spector.js.map +0 -1
  481. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  482. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  483. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  484. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  485. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  487. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  489. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  490. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  491. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  492. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  493. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  495. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  496. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  497. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  498. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  499. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  500. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  501. package/dist/esm/index.js +0 -28
  502. package/dist/esm/index.js.map +0 -1
  503. package/dist/esm/init.js +0 -4
  504. package/dist/esm/init.js.map +0 -1
  505. package/dist/esm/types/webgl.js +0 -2
  506. package/dist/esm/types/webgl.js.map +0 -1
  507. package/dist/esm/types.js +0 -2
  508. package/dist/esm/types.js.map +0 -1
  509. package/dist/init.d.ts +0 -2
  510. package/dist/init.d.ts.map +0 -1
  511. package/dist/init.js +0 -4
  512. package/dist/init.js.map +0 -1
  513. package/dist/types/webgl.d.ts +0 -145
  514. package/dist/types/webgl.d.ts.map +0 -1
  515. package/dist/types/webgl.js +0 -2
  516. package/dist/types/webgl.js.map +0 -1
  517. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  518. package/src/adapter/helpers/attribute-utils.ts +0 -61
  519. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/classic/buffer.ts +0 -474
  522. package/src/context/context/context-state.ts +0 -41
  523. package/src/context/context/device-pixels.ts +0 -158
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -284
@@ -1,19 +1,20 @@
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 {Shader, ShaderProps, CompilerMessage} from '@luma.gl/core';
5
+ import {GL} from '@luma.gl/constants';
5
6
  import {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';
6
- import WebGLDevice from '../webgl-device';
7
+ import {WebGLDevice} from '../webgl-device';
7
8
 
8
9
  /**
9
10
  * An immutable compiled shader program that execute portions of the GPU Pipeline
10
11
  */
11
- export default class WEBGLShader extends Shader {
12
+ export class WEBGLShader extends Shader {
12
13
  readonly device: WebGLDevice;
13
14
  readonly handle: WebGLShader;
14
15
 
15
16
  constructor(device: WebGLDevice, props: ShaderProps) {
16
- super(device, {id: getShaderIdFromProps(props), ...props});
17
+ super(device, props);
17
18
  this.device = device;
18
19
  switch (this.props.stage) {
19
20
  case 'vertex':
@@ -28,7 +29,7 @@ import WebGLDevice from '../webgl-device';
28
29
  this._compile(this.source);
29
30
  }
30
31
 
31
- destroy(): void {
32
+ override destroy(): void {
32
33
  if (this.handle) {
33
34
  this.removeStats();
34
35
  this.device.gl.deleteShader(this.handle);
@@ -37,15 +38,20 @@ import WebGLDevice from '../webgl-device';
37
38
  }
38
39
  }
39
40
 
40
- async compilationInfo(): Promise<readonly CompilerMessage[]> {
41
+ override async getCompilationInfo(): Promise<readonly CompilerMessage[]> {
42
+ return this.getCompilationInfoSync();
43
+ }
44
+
45
+ override getCompilationInfoSync() {
41
46
  const log = this.device.gl.getShaderInfoLog(this.handle);
42
- return log ? parseShaderCompilerLog(log) : [];
47
+ return parseShaderCompilerLog(log);
43
48
  }
44
49
 
45
50
  // PRIVATE METHODS
46
51
 
47
52
  _compile(source: string): void {
48
- const addGLSLVersion = (source: string) => source.startsWith('#version ') ? source : `#version 100\n${source}`;
53
+ const addGLSLVersion = (source: string) =>
54
+ source.startsWith('#version ') ? source : `#version 100\n${source}`;
49
55
  source = addGLSLVersion(source);
50
56
 
51
57
  const {gl} = this.device;
@@ -55,25 +61,24 @@ import WebGLDevice from '../webgl-device';
55
61
  // TODO - For performance reasons, avoid checking shader compilation errors on production?
56
62
  // TODO - Load log even when no error reported, to catch warnings?
57
63
  // https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings
58
- const compileStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS);
59
- if (!compileStatus) {
60
- const shaderLog = gl.getShaderInfoLog(this.handle);
61
- const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];
62
- const messages = parsedLog.filter(message => message.type === 'error');
63
- const formattedLog = formatCompilerLog(messages, source);
64
- const shaderName: string = getShaderInfo(source).name;
65
- const shaderDescription = `${this.stage} shader ${shaderName}`;
66
- log.error(`GLSL compilation errors in ${shaderDescription}\n${formattedLog}`)();
67
- throw new Error(`GLSL compilation errors in ${shaderName}`);
64
+ this.compilationStatus = gl.getShaderParameter(this.handle, GL.COMPILE_STATUS) ? 'success' : 'error';
65
+
66
+ // The `Shader` base class will determine if debug window should be opened based on props
67
+ this.debugShader();
68
+
69
+ if (this.compilationStatus === 'error') {
70
+ throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);
68
71
  }
69
72
  }
70
73
  }
71
74
 
72
- // HELPERS
75
+ // TODO - Original code from luma.gl v8 - keep until new debug functionality has matured
76
+ // if (!compilationSuccess) {
77
+ // const parsedLog = shaderLog ? parseShaderCompilerLog(shaderLog) : [];
78
+ // const messages = parsedLog.filter(message => message.type === 'error');
79
+ // const formattedLog = formatCompilerLog(messages, source, {showSourceCode: 'all', html: true});
80
+ // const shaderDescription = `${this.stage} shader ${shaderName}`;
81
+ // log.error(`GLSL compilation errors in ${shaderDescription}\n${formattedLog}`)();
82
+ // displayShaderLog(parsedLog, source, shaderName);
83
+ // }
73
84
 
74
- /** Deduce an id, from shader source, or supplied id, or shader type */
75
- function getShaderIdFromProps(props: ShaderProps): string {
76
- return getShaderInfo(props.source).name ||
77
- props.id ||
78
- uid(`unnamed ${props.stage}-shader`);
79
- }
@@ -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,15 +12,13 @@ import {
10
12
  Sampler,
11
13
  SamplerProps,
12
14
  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';
15
+ TypedArray
16
+ } from '@luma.gl/core';
17
+ import {Texture, log, assert, isPowerOfTwo, loadImage, isObjectEmpty} from '@luma.gl/core';
18
+ import {GL, GLSamplerParameters} from '@luma.gl/constants';
19
+ import {withGLParameters} from '../../context/state-tracker/with-parameters';
20
20
  import {
21
- getWebGLTextureFormat,
21
+ convertTextureFormatToGL,
22
22
  getWebGLTextureParameters,
23
23
  getTextureFormatBytesPerPixel
24
24
  } from '../converters/texture-formats';
@@ -26,20 +26,45 @@ import {
26
26
  convertSamplerParametersToWebGL,
27
27
  updateSamplerParametersForNPOT
28
28
  } from '../converters/sampler-parameters';
29
- import WebGLDevice from '../webgl-device';
30
- import WEBGLBuffer from './webgl-buffer';
31
- import WEBGLSampler from './webgl-sampler';
29
+ import {WebGLDevice} from '../webgl-device';
30
+ import {WEBGLBuffer} from './webgl-buffer';
31
+ import {WEBGLSampler} from './webgl-sampler';
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
+ };
32
49
 
33
- export type {TextureProps};
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
+ };
34
60
 
35
- export type TextureSourceData =
36
- TypedArray |
37
- ImageData |
38
- HTMLImageElement |
39
- HTMLCanvasElement |
40
- ImageBitmap |
41
- HTMLVideoElement
42
- ;
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,
@@ -131,13 +155,12 @@ export default class WEBGLTexture extends Texture {
131
155
  readonly gl2: WebGL2RenderingContext | null;
132
156
  readonly handle: WebGLTexture;
133
157
 
134
- data;
158
+ /** Sampler object (currently unused) */
159
+ sampler: WEBGLSampler = undefined;
135
160
 
136
- width: number = undefined;
137
- height: number = undefined;
138
- depth: number = undefined;
161
+ // data;
139
162
 
140
- format: GL = undefined;
163
+ glFormat: GL = undefined;
141
164
  type: GL = undefined;
142
165
  dataFormat: GL = undefined;
143
166
  mipmaps: boolean = undefined;
@@ -154,9 +177,6 @@ export default class WEBGLTexture extends Texture {
154
177
  target: GL;
155
178
  textureUnit: number = undefined;
156
179
 
157
- /** Sampler object (currently unused) */
158
- sampler: WEBGLSampler = undefined;
159
-
160
180
  /**
161
181
  * Program.draw() checks the loaded flag of all textures to avoid
162
182
  * Textures that are still loading from promises
@@ -169,16 +189,16 @@ export default class WEBGLTexture extends Texture {
169
189
  lastTime: number;
170
190
  };
171
191
 
172
- constructor(device: Device, props: TextureProps) {
173
- super(device, {format: GL.RGBA, ...props});
192
+ constructor(device: Device, props: WEBGLTextureProps) {
193
+ super(device, {...DEFAULT_WEBGL_TEXTURE_PROPS, format: 'rgba8unorm', ...props});
174
194
 
175
- this.device = cast<WebGLDevice>(device);
195
+ this.device = device as WebGLDevice;
176
196
  this.gl = this.device.gl;
177
197
  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,12 @@ 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
 
211
231
  // eslint-disable-next-line max-statements
212
- initialize(props: TextureProps = {}): this {
232
+ initialize(props: WEBGLTextureProps = {}): this {
213
233
  // Cube textures
214
234
  if (this.props.dimension === 'cube') {
215
235
  return this.initializeCube(props);
@@ -218,7 +238,7 @@ export default class WEBGLTexture extends Texture {
218
238
  let data = props.data;
219
239
 
220
240
  if (data instanceof Promise) {
221
- data.then((resolvedImageData) =>
241
+ data.then(resolvedImageData =>
222
242
  this.initialize(
223
243
  Object.assign({}, props, {
224
244
  pixels: resolvedImageData,
@@ -238,10 +258,9 @@ export default class WEBGLTexture extends Texture {
238
258
  return this;
239
259
  }
240
260
 
241
- let {parameters = {} as Record<GL, any>} = props;
261
+ const {parameters = {} as Record<GL, any>} = props;
242
262
 
243
- const {
244
- pixels = null, recreate = false, pixelStore = {}, textureUnit = undefined} = props;
263
+ const {pixels = null, pixelStore = {}, textureUnit = undefined} = props;
245
264
 
246
265
  // pixels variable is for API compatibility purpose
247
266
  if (!data) {
@@ -254,6 +273,8 @@ export default class WEBGLTexture extends Texture {
254
273
  let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;
255
274
  const {depth = 0} = props;
256
275
 
276
+ const glFormat = convertTextureFormatToGL(props.format, this.device.isWebGL2);
277
+
257
278
  // Deduce width and height
258
279
  ({width, height, compressed, dataFormat, type} = this._deduceParameters({
259
280
  format: props.format,
@@ -265,13 +286,11 @@ export default class WEBGLTexture extends Texture {
265
286
  height
266
287
  }));
267
288
 
268
- const format = getWebGLTextureFormat(this.gl, props.format);
269
-
270
289
  // Store opts for accessors
271
290
  this.width = width;
272
291
  this.height = height;
273
- this.depth = depth;
274
- this.format = format;
292
+ // this.depth = depth;
293
+ this.glFormat = glFormat;
275
294
  this.type = type;
276
295
  this.dataFormat = dataFormat;
277
296
  this.textureUnit = textureUnit;
@@ -293,10 +312,10 @@ export default class WEBGLTexture extends Texture {
293
312
  width,
294
313
  height,
295
314
  depth,
296
- format,
315
+ format: glFormat,
297
316
  type,
298
317
  dataFormat,
299
- // @ts-expect-error
318
+ // @ts-expect-error
300
319
  parameters: pixelStore,
301
320
  compressed
302
321
  });
@@ -309,10 +328,6 @@ export default class WEBGLTexture extends Texture {
309
328
  this.generateMipmap();
310
329
  }
311
330
 
312
- // TODO - Store data to enable auto recreate on context loss
313
- if (recreate) {
314
- this.data = data;
315
- }
316
331
  if (isVideo) {
317
332
  this._video = {
318
333
  video: data as HTMLVideoElement,
@@ -325,8 +340,8 @@ export default class WEBGLTexture extends Texture {
325
340
  return this;
326
341
  }
327
342
 
328
- initializeCube(props?: TextureProps): this {
329
- const {mipmaps = true, parameters = {} as Record<GL, any>} = props;
343
+ initializeCube(props?: WEBGLTextureProps): this {
344
+ const {mipmaps = true, parameters = {} as Record<GL, any>} = props;
330
345
 
331
346
  // Store props for accessors
332
347
  // this.props = props;
@@ -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
@@ -411,7 +426,7 @@ export default class WEBGLTexture extends Texture {
411
426
  this.mipmaps = true;
412
427
 
413
428
  this.gl.bindTexture(this.target, this.handle);
414
- withParameters(this.gl, params, () => {
429
+ withGLParameters(this.gl, params, () => {
415
430
  this.gl.generateMipmap(this.target);
416
431
  });
417
432
  this.gl.bindTexture(this.target, null);
@@ -440,7 +455,7 @@ export default class WEBGLTexture extends Texture {
440
455
  */
441
456
  // eslint-disable-next-line max-statements, complexity
442
457
  setImageData(options: SetImageDataOptions) {
443
- if (this.props.dimension === '3d') {
458
+ if (this.props.dimension === '3d' || this.props.dimension === '2d-array') {
444
459
  return this.setImageData3D(options);
445
460
  }
446
461
 
@@ -450,9 +465,9 @@ export default class WEBGLTexture extends Texture {
450
465
  target = this.target,
451
466
  pixels = null,
452
467
  level = 0,
453
- format = this.format,
468
+ glFormat = this.glFormat,
454
469
  offset = 0,
455
- parameters = {} as Record<GL, any>
470
+ parameters = {} as Record<GL, any>
456
471
  } = options;
457
472
 
458
473
  let {
@@ -487,10 +502,20 @@ export default class WEBGLTexture extends Texture {
487
502
 
488
503
  let gl2;
489
504
 
490
- withParameters(this.gl, parameters, () => {
505
+ withGLParameters(this.gl, parameters, () => {
491
506
  switch (dataType) {
492
507
  case 'null':
493
- gl.texImage2D(target, level, format, width, height, 0 /*border*/, dataFormat, type, data);
508
+ gl.texImage2D(
509
+ target,
510
+ level,
511
+ glFormat,
512
+ width,
513
+ height,
514
+ 0 /* border*/,
515
+ dataFormat,
516
+ type,
517
+ data
518
+ );
494
519
  break;
495
520
  case 'typed-array':
496
521
  // Looks like this assert is not necessary, as offset is ignored under WebGL1
@@ -498,7 +523,7 @@ export default class WEBGLTexture extends Texture {
498
523
  gl.texImage2D(
499
524
  target,
500
525
  level,
501
- format,
526
+ glFormat,
502
527
  width,
503
528
  height,
504
529
  0, // border (must be 0)
@@ -516,10 +541,10 @@ export default class WEBGLTexture extends Texture {
516
541
  gl2.texImage2D(
517
542
  target,
518
543
  level,
519
- format,
544
+ glFormat,
520
545
  width,
521
546
  height,
522
- 0 /*border*/,
547
+ 0 /* border*/,
523
548
  dataFormat,
524
549
  type,
525
550
  offset
@@ -531,16 +556,16 @@ export default class WEBGLTexture extends Texture {
531
556
  gl.texImage2D(
532
557
  target,
533
558
  level,
534
- format,
559
+ glFormat,
535
560
  width,
536
561
  height,
537
- 0 /*border*/,
562
+ 0 /* border*/,
538
563
  dataFormat,
539
564
  type,
540
565
  data
541
566
  );
542
567
  } else {
543
- gl.texImage2D(target, level, format, dataFormat, type, data);
568
+ gl.texImage2D(target, level, glFormat, dataFormat, type, data);
544
569
  }
545
570
  break;
546
571
  case 'compressed':
@@ -565,7 +590,7 @@ export default class WEBGLTexture extends Texture {
565
590
  if (data && data.byteLength) {
566
591
  this.trackAllocatedMemory(data.byteLength, 'Texture');
567
592
  } else {
568
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
593
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
569
594
  this.trackAllocatedMemory(this.width * this.height * bytesPerPixel, 'Texture');
570
595
  }
571
596
 
@@ -588,7 +613,7 @@ export default class WEBGLTexture extends Texture {
588
613
  width = this.width,
589
614
  height = this.height,
590
615
  level = 0,
591
- format = this.format,
616
+ glFormat = this.glFormat,
592
617
  type = this.type,
593
618
  dataFormat = this.dataFormat,
594
619
  compressed = false,
@@ -627,10 +652,10 @@ export default class WEBGLTexture extends Texture {
627
652
 
628
653
  this.gl.bindTexture(this.target, this.handle);
629
654
 
630
- withParameters(this.gl, parameters, () => {
655
+ withGLParameters(this.gl, parameters, () => {
631
656
  // TODO - x,y parameters
632
657
  if (compressed) {
633
- this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);
658
+ this.gl.compressedTexSubImage2D(target, level, x, y, width, height, glFormat, data);
634
659
  } else if (data === null) {
635
660
  this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
636
661
  } else if (ArrayBuffer.isView(data)) {
@@ -724,12 +749,12 @@ export default class WEBGLTexture extends Texture {
724
749
 
725
750
  // HELPER METHODS
726
751
 
727
- _deduceParameters(opts: TextureProps) {
752
+ _deduceParameters(opts: WEBGLTextureProps) {
728
753
  const {format, data} = opts;
729
754
  let {width, height, dataFormat, type, compressed} = opts;
730
755
 
731
756
  // Deduce format and type from format
732
- const parameters = getWebGLTextureParameters(this.gl, format);
757
+ const parameters = getWebGLTextureParameters(format, this.device.isWebGL2);
733
758
  dataFormat = dataFormat || parameters.dataFormat;
734
759
  type = type || parameters.type;
735
760
  compressed = compressed || parameters.compressed;
@@ -802,7 +827,7 @@ export default class WEBGLTexture extends Texture {
802
827
  // ... }
803
828
 
804
829
  const resolvedFaces = await Promise.all(
805
- WEBGLTexture.FACES.map((face) => {
830
+ WEBGLTexture.FACES.map(face => {
806
831
  const facePixels = imageDataMap[face];
807
832
  return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);
808
833
  })
@@ -819,7 +844,7 @@ export default class WEBGLTexture extends Texture {
819
844
  resolvedFaces[index].forEach((image, lodLevel) => {
820
845
  // TODO: adjust width & height for LOD!
821
846
  if (width && height) {
822
- gl.texImage2D(face, lodLevel, format, width, height, 0 /*border*/, format, type, image);
847
+ gl.texImage2D(face, lodLevel, format, width, height, 0 /* border*/, format, type, image);
823
848
  } else {
824
849
  gl.texImage2D(face, lodLevel, format, format, type, image);
825
850
  }
@@ -848,7 +873,7 @@ export default class WEBGLTexture extends Texture {
848
873
 
849
874
  this.bind();
850
875
  if (imageData instanceof Promise) {
851
- imageData.then((resolvedImageData) =>
876
+ imageData.then(resolvedImageData =>
852
877
  this.setImageDataForFace(
853
878
  Object.assign({}, options, {
854
879
  face,
@@ -858,7 +883,7 @@ export default class WEBGLTexture extends Texture {
858
883
  )
859
884
  );
860
885
  } else if (this.width || this.height) {
861
- gl.texImage2D(face, 0, format, width, height, 0 /*border*/, format, type, imageData);
886
+ gl.texImage2D(face, 0, format, width, height, 0 /* border*/, format, type, imageData);
862
887
  } else {
863
888
  gl.texImage2D(face, 0, format, format, type, imageData);
864
889
  }
@@ -885,9 +910,9 @@ export default class WEBGLTexture extends Texture {
885
910
 
886
911
  this.gl.bindTexture(this.target, this.handle);
887
912
 
888
- const webglTextureFormat = getWebGLTextureParameters(this.gl, format);
913
+ const webglTextureFormat = getWebGLTextureParameters(format, this.device.isWebGL2);
889
914
 
890
- withParameters(this.gl, parameters, () => {
915
+ withGLParameters(this.gl, parameters, () => {
891
916
  if (ArrayBuffer.isView(data)) {
892
917
  // @ts-expect-error
893
918
  this.gl.texImage3D(
@@ -925,7 +950,7 @@ export default class WEBGLTexture extends Texture {
925
950
  if (data && data.byteLength) {
926
951
  this.trackAllocatedMemory(data.byteLength, 'Texture');
927
952
  } else {
928
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
953
+ const bytesPerPixel = getTextureFormatBytesPerPixel(this.props.format, this.device.isWebGL2);
929
954
  this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');
930
955
  }
931
956
 
@@ -940,7 +965,7 @@ export default class WEBGLTexture extends Texture {
940
965
  * Sets sampler parameters on texture
941
966
  * @note: Applies NPOT workaround if appropriate
942
967
  */
943
- _setSamplerParameters(parameters: GLSamplerParameters) {
968
+ _setSamplerParameters(parameters: GLSamplerParameters): void {
944
969
  // Work around WebGL1 sampling restrictions on NPOT textures
945
970
  if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
946
971
  parameters = updateSamplerParametersForNPOT(parameters);
@@ -955,8 +980,8 @@ export default class WEBGLTexture extends Texture {
955
980
 
956
981
  this.gl.bindTexture(this.target, this.handle);
957
982
  for (const [pname, pvalue] of Object.entries(parameters)) {
958
- const param = Number(pname);
959
- let value = pvalue;
983
+ const param = Number(pname) as GL.TEXTURE_MIN_LOD | GL.TEXTURE_MAX_LOD;
984
+ const value = pvalue;
960
985
 
961
986
  // Apparently there are integer/float conversion issues requires two parameter setting functions in JavaScript.
962
987
  // For now, pick the float version for parameters specified as GLfloat.
@@ -972,11 +997,14 @@ export default class WEBGLTexture extends Texture {
972
997
  }
973
998
  }
974
999
  this.gl.bindTexture(this.target, null);
975
- return this;
1000
+ return;
976
1001
  }
977
1002
 
978
1003
  /** @deprecated For LegacyTexture subclass */
979
- protected _getWebGL1NPOTParameterOverride(pname: number, value: number): number {
1004
+ protected _getWebGL1NPOTParameterOverride(
1005
+ pname: GL.TEXTURE_MIN_FILTER | GL.TEXTURE_WRAP_S | GL.TEXTURE_WRAP_T,
1006
+ value: GL.LINEAR | GL.NEAREST
1007
+ ): number {
980
1008
  // NOTE: Apply NPOT workaround
981
1009
  const npot = this.device.isWebGL1 && isNPOT(this.width, this.height);
982
1010
  if (npot) {
@@ -1031,6 +1059,4 @@ function isNPOT(width: number, height: number): boolean {
1031
1059
 
1032
1060
  function logParameters(parameters: Record<number, GL | number>) {
1033
1061
  log.log(1, 'texture sampler parameters', parameters)();
1034
- for (const [pname, pvalue] of Object.entries(parameters)) {
1035
- }
1036
1062
  }