@luma.gl/webgl 9.0.0-alpha.9 → 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,834 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { isObjectEmpty } from '@luma.gl/api';
3
- import { Texture, cast, log, assert, isPowerOfTwo, loadImage } from '@luma.gl/api';
4
- import GL from '@luma.gl/constants';
5
- import { withParameters } from '../../context/state-tracker/with-parameters';
6
- import { getWebGLTextureFormat, getWebGLTextureParameters, getTextureFormatBytesPerPixel } from '../converters/texture-formats';
7
- import { convertSamplerParametersToWebGL, updateSamplerParametersForNPOT } from '../converters/sampler-parameters';
8
- import WEBGLBuffer from './webgl-buffer';
9
- import WEBGLSampler from './webgl-sampler';
10
- export default class WEBGLTexture extends Texture {
11
- constructor(device, props) {
12
- var _this$props;
13
-
14
- super(device, {
15
- format: GL.RGBA,
16
- ...props
17
- });
18
-
19
- _defineProperty(this, "MAX_ATTRIBUTES", void 0);
20
-
21
- _defineProperty(this, "device", void 0);
22
-
23
- _defineProperty(this, "gl", void 0);
24
-
25
- _defineProperty(this, "gl2", void 0);
26
-
27
- _defineProperty(this, "handle", void 0);
28
-
29
- _defineProperty(this, "data", void 0);
30
-
31
- _defineProperty(this, "width", undefined);
32
-
33
- _defineProperty(this, "height", undefined);
34
-
35
- _defineProperty(this, "depth", undefined);
36
-
37
- _defineProperty(this, "format", undefined);
38
-
39
- _defineProperty(this, "type", undefined);
40
-
41
- _defineProperty(this, "dataFormat", undefined);
42
-
43
- _defineProperty(this, "mipmaps", undefined);
44
-
45
- _defineProperty(this, "target", void 0);
46
-
47
- _defineProperty(this, "textureUnit", undefined);
48
-
49
- _defineProperty(this, "sampler", undefined);
50
-
51
- _defineProperty(this, "loaded", false);
52
-
53
- _defineProperty(this, "_video", void 0);
54
-
55
- this.device = cast(device);
56
- this.gl = this.device.gl;
57
- this.gl2 = this.device.gl2;
58
- this.handle = this.props.handle || this.gl.createTexture();
59
- this.handle.__SPECTOR_Metadata = { ...this.props,
60
- data: typeof this.props.data
61
- };
62
- this.target = getWebGLTextureTarget(this.props);
63
- this.loaded = false;
64
-
65
- if (typeof ((_this$props = this.props) === null || _this$props === void 0 ? void 0 : _this$props.data) === 'string') {
66
- Object.assign(this.props, {
67
- data: loadImage(this.props.data)
68
- });
69
- }
70
-
71
- this.initialize(this.props);
72
- Object.seal(this);
73
- }
74
-
75
- destroy() {
76
- if (this.handle) {
77
- this.gl.deleteTexture(this.handle);
78
- this.removeStats();
79
- this.trackDeallocatedMemory('Texture');
80
- this.destroyed = true;
81
- }
82
- }
83
-
84
- toString() {
85
- return "Texture(".concat(this.id, ",").concat(this.width, "x").concat(this.height, ")");
86
- }
87
-
88
- initialize(props = {}) {
89
- if (this.props.dimension === 'cube') {
90
- return this.initializeCube(props);
91
- }
92
-
93
- let data = props.data;
94
-
95
- if (data instanceof Promise) {
96
- data.then(resolvedImageData => this.initialize(Object.assign({}, props, {
97
- pixels: resolvedImageData,
98
- data: resolvedImageData
99
- })));
100
- return this;
101
- }
102
-
103
- const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;
104
-
105
- if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {
106
- this._video = null;
107
- data.addEventListener('loadeddata', () => this.initialize(props));
108
- return this;
109
- }
110
-
111
- let {
112
- parameters = {}
113
- } = props;
114
- const {
115
- pixels = null,
116
- recreate = false,
117
- pixelStore = {},
118
- textureUnit = undefined
119
- } = props;
120
-
121
- if (!data) {
122
- data = pixels;
123
- }
124
-
125
- let {
126
- width,
127
- height,
128
- dataFormat,
129
- type,
130
- compressed = false,
131
- mipmaps = true
132
- } = props;
133
- const {
134
- depth = 0
135
- } = props;
136
- ({
137
- width,
138
- height,
139
- compressed,
140
- dataFormat,
141
- type
142
- } = this._deduceParameters({
143
- format: props.format,
144
- type,
145
- dataFormat,
146
- compressed,
147
- data,
148
- width,
149
- height
150
- }));
151
- const format = getWebGLTextureFormat(this.gl, props.format);
152
- this.width = width;
153
- this.height = height;
154
- this.depth = depth;
155
- this.format = format;
156
- this.type = type;
157
- this.dataFormat = dataFormat;
158
- this.textureUnit = textureUnit;
159
-
160
- if (Number.isFinite(this.textureUnit)) {
161
- this.gl.activeTexture(GL.TEXTURE0 + this.textureUnit);
162
- this.gl.bindTexture(this.target, this.handle);
163
- }
164
-
165
- if (mipmaps && this.device.isWebGL1 && isNPOT(this.width, this.height)) {
166
- log.warn("texture: ".concat(this, " is Non-Power-Of-Two, disabling mipmaps"))();
167
- mipmaps = false;
168
- }
169
-
170
- this.mipmaps = mipmaps;
171
- this.setImageData({
172
- data,
173
- width,
174
- height,
175
- depth,
176
- format,
177
- type,
178
- dataFormat,
179
- parameters: pixelStore,
180
- compressed
181
- });
182
- this.setSampler(props.sampler);
183
-
184
- this._setSamplerParameters(parameters);
185
-
186
- if (mipmaps) {
187
- this.generateMipmap();
188
- }
189
-
190
- if (recreate) {
191
- this.data = data;
192
- }
193
-
194
- if (isVideo) {
195
- this._video = {
196
- video: data,
197
- parameters,
198
- lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1
199
- };
200
- }
201
-
202
- return this;
203
- }
204
-
205
- initializeCube(props) {
206
- const {
207
- mipmaps = true,
208
- parameters = {}
209
- } = props;
210
- this.setCubeMapImageData(props).then(() => {
211
- this.loaded = true;
212
-
213
- if (mipmaps) {
214
- this.generateMipmap(props);
215
- }
216
-
217
- this.setSampler(props.sampler);
218
-
219
- this._setSamplerParameters(parameters);
220
- });
221
- return this;
222
- }
223
-
224
- setSampler(sampler = {}) {
225
- let samplerProps;
226
-
227
- if (sampler instanceof WEBGLSampler) {
228
- this.sampler = sampler;
229
- samplerProps = sampler.props;
230
- } else {
231
- this.sampler = new WEBGLSampler(this.device, sampler);
232
- samplerProps = sampler;
233
- }
234
-
235
- const parameters = convertSamplerParametersToWebGL(samplerProps);
236
-
237
- this._setSamplerParameters(parameters);
238
-
239
- return this;
240
- }
241
-
242
- resize(options) {
243
- const {
244
- height,
245
- width,
246
- mipmaps = false
247
- } = options;
248
-
249
- if (width !== this.width || height !== this.height) {
250
- return this.initialize({
251
- width,
252
- height,
253
- format: this.format,
254
- type: this.type,
255
- dataFormat: this.dataFormat,
256
- mipmaps
257
- });
258
- }
259
-
260
- return this;
261
- }
262
-
263
- update() {
264
- if (this._video) {
265
- const {
266
- video,
267
- parameters,
268
- lastTime
269
- } = this._video;
270
-
271
- if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {
272
- return;
273
- }
274
-
275
- this.setSubImageData({
276
- data: video,
277
- parameters
278
- });
279
-
280
- if (this.mipmaps) {
281
- this.generateMipmap();
282
- }
283
-
284
- this._video.lastTime = video.currentTime;
285
- }
286
- }
287
-
288
- generateMipmap(params = {}) {
289
- if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
290
- log.warn("texture: ".concat(this, " is Non-Power-Of-Two, disabling mipmaping"))();
291
- return this;
292
- }
293
-
294
- this.mipmaps = true;
295
- this.gl.bindTexture(this.target, this.handle);
296
- withParameters(this.gl, params, () => {
297
- this.gl.generateMipmap(this.target);
298
- });
299
- this.gl.bindTexture(this.target, null);
300
- return this;
301
- }
302
-
303
- setImageData(options) {
304
- if (this.props.dimension === '3d') {
305
- return this.setImageData3D(options);
306
- }
307
-
308
- this.trackDeallocatedMemory('Texture');
309
- const {
310
- target = this.target,
311
- pixels = null,
312
- level = 0,
313
- format = this.format,
314
- offset = 0,
315
- parameters = {}
316
- } = options;
317
- let {
318
- data = null,
319
- type = this.type,
320
- width = this.width,
321
- height = this.height,
322
- dataFormat = this.dataFormat,
323
- compressed = false
324
- } = options;
325
-
326
- if (!data) {
327
- data = pixels;
328
- }
329
-
330
- ({
331
- type,
332
- dataFormat,
333
- compressed,
334
- width,
335
- height
336
- } = this._deduceParameters({
337
- format: this.props.format,
338
- type,
339
- dataFormat,
340
- compressed,
341
- data,
342
- width,
343
- height
344
- }));
345
- const {
346
- gl
347
- } = this;
348
- gl.bindTexture(this.target, this.handle);
349
- let dataType = null;
350
- ({
351
- data,
352
- dataType
353
- } = this._getDataType({
354
- data,
355
- compressed
356
- }));
357
- let gl2;
358
- withParameters(this.gl, parameters, () => {
359
- switch (dataType) {
360
- case 'null':
361
- gl.texImage2D(target, level, format, width, height, 0, dataFormat, type, data);
362
- break;
363
-
364
- case 'typed-array':
365
- gl.texImage2D(target, level, format, width, height, 0, dataFormat, type, data, offset);
366
- break;
367
-
368
- case 'buffer':
369
- gl2 = this.device.assertWebGL2();
370
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);
371
- gl2.texImage2D(target, level, format, width, height, 0, dataFormat, type, offset);
372
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
373
- break;
374
-
375
- case 'browser-object':
376
- if (this.device.isWebGL2) {
377
- gl.texImage2D(target, level, format, width, height, 0, dataFormat, type, data);
378
- } else {
379
- gl.texImage2D(target, level, format, dataFormat, type, data);
380
- }
381
-
382
- break;
383
-
384
- case 'compressed':
385
- for (const [levelIndex, levelData] of data.entries()) {
386
- gl.compressedTexImage2D(target, levelIndex, levelData.format, levelData.width, levelData.height, 0, levelData.data);
387
- }
388
-
389
- break;
390
-
391
- default:
392
- assert(false, 'Unknown image data type');
393
- }
394
- });
395
-
396
- if (data && data.byteLength) {
397
- this.trackAllocatedMemory(data.byteLength, 'Texture');
398
- } else {
399
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
400
- this.trackAllocatedMemory(this.width * this.height * bytesPerPixel, 'Texture');
401
- }
402
-
403
- this.loaded = true;
404
- return this;
405
- }
406
-
407
- setSubImageData({
408
- target = this.target,
409
- pixels = null,
410
- data = null,
411
- x = 0,
412
- y = 0,
413
- width = this.width,
414
- height = this.height,
415
- level = 0,
416
- format = this.format,
417
- type = this.type,
418
- dataFormat = this.dataFormat,
419
- compressed = false,
420
- offset = 0,
421
- parameters = {}
422
- }) {
423
- ({
424
- type,
425
- dataFormat,
426
- compressed,
427
- width,
428
- height
429
- } = this._deduceParameters({
430
- format: this.props.format,
431
- type,
432
- dataFormat,
433
- compressed,
434
- data,
435
- width,
436
- height
437
- }));
438
- assert(this.depth === 1, 'texSubImage not supported for 3D textures');
439
-
440
- if (!data) {
441
- data = pixels;
442
- }
443
-
444
- if (data && data.data) {
445
- const ndarray = data;
446
- data = ndarray.data;
447
- width = ndarray.shape[0];
448
- height = ndarray.shape[1];
449
- }
450
-
451
- if (data instanceof WEBGLBuffer) {
452
- data = data.handle;
453
- }
454
-
455
- this.gl.bindTexture(this.target, this.handle);
456
- withParameters(this.gl, parameters, () => {
457
- if (compressed) {
458
- this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);
459
- } else if (data === null) {
460
- this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
461
- } else if (ArrayBuffer.isView(data)) {
462
- this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);
463
- } else if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
464
- const gl2 = this.device.assertWebGL2();
465
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);
466
- gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);
467
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
468
- } else if (this.device.isWebGL2) {
469
- const gl2 = this.device.assertWebGL2();
470
- gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);
471
- } else {
472
- this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);
473
- }
474
- });
475
- this.gl.bindTexture(this.target, null);
476
- }
477
-
478
- copyFramebuffer(opts = {}) {
479
- log.error('Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})')();
480
- return null;
481
- }
482
-
483
- getActiveUnit() {
484
- return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;
485
- }
486
-
487
- bind(textureUnit = this.textureUnit) {
488
- const {
489
- gl
490
- } = this;
491
-
492
- if (textureUnit !== undefined) {
493
- this.textureUnit = textureUnit;
494
- gl.activeTexture(gl.TEXTURE0 + textureUnit);
495
- }
496
-
497
- gl.bindTexture(this.target, this.handle);
498
- return textureUnit;
499
- }
500
-
501
- unbind(textureUnit = this.textureUnit) {
502
- const {
503
- gl
504
- } = this;
505
-
506
- if (textureUnit !== undefined) {
507
- this.textureUnit = textureUnit;
508
- gl.activeTexture(gl.TEXTURE0 + textureUnit);
509
- }
510
-
511
- gl.bindTexture(this.target, null);
512
- return textureUnit;
513
- }
514
-
515
- _getDataType({
516
- data,
517
- compressed = false
518
- }) {
519
- if (compressed) {
520
- return {
521
- data,
522
- dataType: 'compressed'
523
- };
524
- }
525
-
526
- if (data === null) {
527
- return {
528
- data,
529
- dataType: 'null'
530
- };
531
- }
532
-
533
- if (ArrayBuffer.isView(data)) {
534
- return {
535
- data,
536
- dataType: 'typed-array'
537
- };
538
- }
539
-
540
- if (data instanceof WEBGLBuffer) {
541
- return {
542
- data: data.handle,
543
- dataType: 'buffer'
544
- };
545
- }
546
-
547
- if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
548
- return {
549
- data,
550
- dataType: 'buffer'
551
- };
552
- }
553
-
554
- return {
555
- data,
556
- dataType: 'browser-object'
557
- };
558
- }
559
-
560
- _deduceParameters(opts) {
561
- const {
562
- format,
563
- data
564
- } = opts;
565
- let {
566
- width,
567
- height,
568
- dataFormat,
569
- type,
570
- compressed
571
- } = opts;
572
- const parameters = getWebGLTextureParameters(this.gl, format);
573
- dataFormat = dataFormat || parameters.dataFormat;
574
- type = type || parameters.type;
575
- compressed = compressed || parameters.compressed;
576
- ({
577
- width,
578
- height
579
- } = this._deduceImageSize(data, width, height));
580
- return {
581
- dataFormat,
582
- type,
583
- compressed,
584
- width,
585
- height,
586
- format,
587
- data
588
- };
589
- }
590
-
591
- _deduceImageSize(data, width, height) {
592
- let size;
593
-
594
- if (typeof ImageData !== 'undefined' && data instanceof ImageData) {
595
- size = {
596
- width: data.width,
597
- height: data.height
598
- };
599
- } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {
600
- size = {
601
- width: data.naturalWidth,
602
- height: data.naturalHeight
603
- };
604
- } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {
605
- size = {
606
- width: data.width,
607
- height: data.height
608
- };
609
- } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {
610
- size = {
611
- width: data.width,
612
- height: data.height
613
- };
614
- } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {
615
- size = {
616
- width: data.videoWidth,
617
- height: data.videoHeight
618
- };
619
- } else if (!data) {
620
- size = {
621
- width: width >= 0 ? width : 1,
622
- height: height >= 0 ? height : 1
623
- };
624
- } else {
625
- size = {
626
- width,
627
- height
628
- };
629
- }
630
-
631
- assert(size, 'Could not deduced texture size');
632
- assert(width === undefined || size.width === width, 'Deduced texture width does not match supplied width');
633
- assert(height === undefined || size.height === height, 'Deduced texture height does not match supplied height');
634
- return size;
635
- }
636
-
637
- async setCubeMapImageData(options) {
638
- const {
639
- gl
640
- } = this;
641
- const {
642
- width,
643
- height,
644
- pixels,
645
- data,
646
- format = GL.RGBA,
647
- type = GL.UNSIGNED_BYTE
648
- } = options;
649
- const imageDataMap = pixels || data;
650
- const resolvedFaces = await Promise.all(WEBGLTexture.FACES.map(face => {
651
- const facePixels = imageDataMap[face];
652
- return Promise.all(Array.isArray(facePixels) ? facePixels : [facePixels]);
653
- }));
654
- this.bind();
655
- WEBGLTexture.FACES.forEach((face, index) => {
656
- if (resolvedFaces[index].length > 1 && this.props.mipmaps !== false) {
657
- log.warn("".concat(this.id, " has mipmap and multiple LODs."))();
658
- }
659
-
660
- resolvedFaces[index].forEach((image, lodLevel) => {
661
- if (width && height) {
662
- gl.texImage2D(face, lodLevel, format, width, height, 0, format, type, image);
663
- } else {
664
- gl.texImage2D(face, lodLevel, format, format, type, image);
665
- }
666
- });
667
- });
668
- this.unbind();
669
- }
670
-
671
- setImageDataForFace(options) {
672
- const {
673
- face,
674
- width,
675
- height,
676
- pixels,
677
- data,
678
- format = GL.RGBA,
679
- type = GL.UNSIGNED_BYTE
680
- } = options;
681
- const {
682
- gl
683
- } = this;
684
- const imageData = pixels || data;
685
- this.bind();
686
-
687
- if (imageData instanceof Promise) {
688
- imageData.then(resolvedImageData => this.setImageDataForFace(Object.assign({}, options, {
689
- face,
690
- data: resolvedImageData,
691
- pixels: resolvedImageData
692
- })));
693
- } else if (this.width || this.height) {
694
- gl.texImage2D(face, 0, format, width, height, 0, format, type, imageData);
695
- } else {
696
- gl.texImage2D(face, 0, format, format, type, imageData);
697
- }
698
-
699
- return this;
700
- }
701
-
702
- setImageData3D(options) {
703
- const {
704
- level = 0,
705
- dataFormat,
706
- format,
707
- type,
708
- width,
709
- height,
710
- depth = 1,
711
- offset = 0,
712
- data,
713
- parameters = {}
714
- } = options;
715
- this.trackDeallocatedMemory('Texture');
716
- this.gl.bindTexture(this.target, this.handle);
717
- const webglTextureFormat = getWebGLTextureParameters(this.gl, format);
718
- withParameters(this.gl, parameters, () => {
719
- if (ArrayBuffer.isView(data)) {
720
- this.gl.texImage3D(this.target, level, webglTextureFormat.format, width, height, depth, 0, webglTextureFormat.dataFormat, webglTextureFormat.type, data);
721
- }
722
-
723
- if (data instanceof WEBGLBuffer) {
724
- this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);
725
- this.gl.texImage3D(this.target, level, dataFormat, width, height, depth, 0, format, type, offset);
726
- }
727
- });
728
-
729
- if (data && data.byteLength) {
730
- this.trackAllocatedMemory(data.byteLength, 'Texture');
731
- } else {
732
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
733
- this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');
734
- }
735
-
736
- this.loaded = true;
737
- return this;
738
- }
739
-
740
- _setSamplerParameters(parameters) {
741
- if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
742
- parameters = updateSamplerParametersForNPOT(parameters);
743
- }
744
-
745
- if (isObjectEmpty(parameters)) {
746
- return;
747
- }
748
-
749
- logParameters(parameters);
750
- this.gl.bindTexture(this.target, this.handle);
751
-
752
- for (const [pname, pvalue] of Object.entries(parameters)) {
753
- const param = Number(pname);
754
- let value = pvalue;
755
-
756
- switch (param) {
757
- case GL.TEXTURE_MIN_LOD:
758
- case GL.TEXTURE_MAX_LOD:
759
- this.gl.texParameterf(this.target, param, value);
760
- break;
761
-
762
- default:
763
- this.gl.texParameteri(this.target, param, value);
764
- break;
765
- }
766
- }
767
-
768
- this.gl.bindTexture(this.target, null);
769
- return this;
770
- }
771
-
772
- _getWebGL1NPOTParameterOverride(pname, value) {
773
- const npot = this.device.isWebGL1 && isNPOT(this.width, this.height);
774
-
775
- if (npot) {
776
- switch (pname) {
777
- case GL.TEXTURE_MIN_FILTER:
778
- if (value !== GL.LINEAR && value !== GL.NEAREST) {
779
- return GL.LINEAR;
780
- }
781
-
782
- break;
783
-
784
- case GL.TEXTURE_WRAP_S:
785
- case GL.TEXTURE_WRAP_T:
786
- return GL.CLAMP_TO_EDGE;
787
-
788
- default:
789
- break;
790
- }
791
- }
792
-
793
- return value;
794
- }
795
-
796
- }
797
-
798
- _defineProperty(WEBGLTexture, "FACES", [GL.TEXTURE_CUBE_MAP_POSITIVE_X, GL.TEXTURE_CUBE_MAP_NEGATIVE_X, GL.TEXTURE_CUBE_MAP_POSITIVE_Y, GL.TEXTURE_CUBE_MAP_NEGATIVE_Y, GL.TEXTURE_CUBE_MAP_POSITIVE_Z, GL.TEXTURE_CUBE_MAP_NEGATIVE_Z]);
799
-
800
- function getWebGLTextureTarget(props) {
801
- switch (props.dimension) {
802
- case '2d':
803
- return GL.TEXTURE_2D;
804
-
805
- case 'cube':
806
- return GL.TEXTURE_CUBE_MAP;
807
-
808
- case '2d-array':
809
- return GL.TEXTURE_2D_ARRAY;
810
-
811
- case '3d':
812
- return GL.TEXTURE_3D;
813
-
814
- case '1d':
815
- case 'cube-array':
816
- default:
817
- throw new Error(props.dimension);
818
- }
819
- }
820
-
821
- function isNPOT(width, height) {
822
- if (!width || !height) {
823
- return false;
824
- }
825
-
826
- return !isPowerOfTwo(width) || !isPowerOfTwo(height);
827
- }
828
-
829
- function logParameters(parameters) {
830
- log.log(1, 'texture sampler parameters', parameters)();
831
-
832
- for (const [pname, pvalue] of Object.entries(parameters)) {}
833
- }
834
- //# sourceMappingURL=webgl-texture.js.map