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

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 (531) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +23 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +101 -73
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +6 -6
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +74 -111
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +309 -346
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +17 -23
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +31 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  42. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  43. package/dist/adapter/helpers/get-shader-info.js +25 -0
  44. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  45. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  46. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  47. package/dist/adapter/helpers/get-shader-layout.js +87 -143
  48. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  49. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  50. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  51. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  52. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  53. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  54. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  55. package/dist/adapter/helpers/set-uniform.js +51 -82
  56. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  57. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  58. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  59. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  60. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  61. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  62. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  63. package/dist/adapter/objects/constants-to-keys.js +2 -29
  64. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  65. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  66. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  68. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  69. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  70. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  71. package/dist/adapter/objects/webgl-resource.js +26 -83
  72. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  73. package/dist/adapter/resources/webgl-buffer.d.ts +19 -11
  74. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-buffer.js +60 -88
  76. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  78. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  80. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  82. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  84. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  85. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  86. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  87. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-framebuffer.js +63 -173
  89. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  91. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pass.js +99 -11
  93. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  94. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -21
  95. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-render-pipeline.js +108 -270
  97. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  98. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  99. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-sampler.js +11 -21
  101. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  102. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  103. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-shader.js +21 -34
  105. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  106. package/dist/adapter/resources/webgl-texture.d.ts +62 -42
  107. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  108. package/dist/adapter/resources/webgl-texture.js +137 -256
  109. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  110. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  111. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  113. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  114. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  115. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  116. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  117. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  118. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  119. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  120. package/dist/adapter/webgl-canvas-context.js +10 -23
  121. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  122. package/dist/adapter/webgl-device.d.ts +76 -41
  123. package/dist/adapter/webgl-device.d.ts.map +1 -1
  124. package/dist/adapter/webgl-device.js +219 -129
  125. package/dist/adapter/webgl-device.js.map +1 -1
  126. package/dist/classic/accessor.d.ts +3 -3
  127. package/dist/classic/accessor.d.ts.map +1 -1
  128. package/dist/classic/accessor.js +26 -52
  129. package/dist/classic/accessor.js.map +1 -1
  130. package/dist/classic/clear.d.ts +22 -0
  131. package/dist/classic/clear.d.ts.map +1 -0
  132. package/dist/classic/clear.js +88 -0
  133. package/dist/classic/clear.js.map +1 -0
  134. package/dist/classic/copy-and-blit.d.ts +62 -0
  135. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  136. package/dist/classic/copy-and-blit.js +191 -0
  137. package/dist/classic/copy-and-blit.js.map +1 -0
  138. package/dist/classic/format-utils.d.ts +3 -0
  139. package/dist/classic/format-utils.d.ts.map +1 -0
  140. package/dist/classic/format-utils.js +37 -0
  141. package/dist/classic/format-utils.js.map +1 -0
  142. package/dist/classic/typed-array-utils.d.ts +17 -17
  143. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  144. package/dist/classic/typed-array-utils.js +18 -39
  145. package/dist/classic/typed-array-utils.js.map +1 -1
  146. package/dist/context/context/create-browser-context.d.ts +40 -0
  147. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  148. package/dist/context/context/create-browser-context.js +53 -0
  149. package/dist/context/context/create-browser-context.js.map +1 -0
  150. package/dist/context/context/create-headless-context.d.ts +9 -0
  151. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  152. package/dist/context/context/create-headless-context.js +42 -0
  153. package/dist/context/context/create-headless-context.js.map +1 -0
  154. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  155. package/dist/context/context/webgl-checks.js +1 -4
  156. package/dist/context/context/webgl-checks.js.map +1 -1
  157. package/dist/context/debug/spector.d.ts +1 -2
  158. package/dist/context/debug/spector.d.ts.map +1 -1
  159. package/dist/context/debug/spector.js +8 -20
  160. package/dist/context/debug/spector.js.map +1 -1
  161. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  162. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  163. package/dist/context/debug/webgl-developer-tools.js +15 -39
  164. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  165. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  166. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  167. package/dist/context/parameters/unified-parameter-api.js +9 -19
  168. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  169. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  170. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  171. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  172. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/context/polyfill/context-data.d.ts +13 -0
  174. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  175. package/dist/context/polyfill/context-data.js +12 -0
  176. package/dist/context/polyfill/context-data.js.map +1 -0
  177. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  178. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  179. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  180. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-context.js +22 -30
  183. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  185. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  186. package/dist/context/polyfill/polyfill-table.js +18 -41
  187. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  188. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  189. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  190. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  191. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  192. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  193. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  194. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  195. package/dist/context/state-tracker/track-context-state.js +26 -62
  196. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  197. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  198. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  199. package/dist/context/state-tracker/with-parameters.js +8 -10
  200. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  201. package/dist/dist.dev.js +8555 -0
  202. package/dist/index.cjs +6602 -0
  203. package/dist/index.d.ts +26 -24
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +27 -26
  206. package/dist/index.js.map +1 -1
  207. package/dist/types.d.ts +3 -1
  208. package/dist/types.d.ts.map +1 -1
  209. package/dist/types.js.map +1 -1
  210. package/dist.min.js +49 -0
  211. package/package.json +21 -9
  212. package/src/adapter/converters/device-parameters.ts +144 -41
  213. package/src/adapter/converters/sampler-parameters.ts +103 -41
  214. package/src/adapter/converters/shader-formats.ts +44 -0
  215. package/src/adapter/converters/texture-formats.ts +268 -195
  216. package/src/adapter/converters/vertex-formats.ts +71 -10
  217. package/src/adapter/device-helpers/device-features.ts +14 -3
  218. package/src/adapter/device-helpers/device-limits.ts +5 -3
  219. package/src/adapter/device-helpers/get-device-info.ts +53 -18
  220. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  221. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  222. package/src/adapter/helpers/get-shader-info.ts +41 -0
  223. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  224. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  225. package/src/adapter/helpers/set-uniform.ts +39 -35
  226. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  227. package/src/adapter/objects/constants-to-keys.ts +6 -25
  228. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  229. package/src/adapter/objects/webgl-resource.ts +16 -23
  230. package/src/adapter/resources/webgl-buffer.ts +67 -62
  231. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  232. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  233. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  234. package/src/adapter/resources/webgl-framebuffer.ts +90 -134
  235. package/src/adapter/resources/webgl-render-pass.ts +166 -4
  236. package/src/adapter/resources/webgl-render-pipeline.ts +256 -192
  237. package/src/adapter/resources/webgl-sampler.ts +16 -10
  238. package/src/adapter/resources/webgl-shader.ts +14 -11
  239. package/src/adapter/resources/webgl-texture.ts +138 -99
  240. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  241. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  242. package/src/adapter/webgl-canvas-context.ts +16 -14
  243. package/src/adapter/webgl-device.ts +328 -79
  244. package/src/classic/accessor.ts +8 -18
  245. package/src/classic/clear.ts +113 -0
  246. package/src/classic/copy-and-blit.ts +311 -0
  247. package/src/classic/format-utils.ts +46 -0
  248. package/src/classic/typed-array-utils.ts +21 -27
  249. package/src/context/context/create-browser-context.ts +140 -0
  250. package/src/context/context/create-headless-context.ts +51 -0
  251. package/src/context/context/webgl-checks.ts +3 -1
  252. package/src/context/debug/spector.ts +9 -6
  253. package/src/context/debug/webgl-developer-tools.ts +23 -15
  254. package/src/context/parameters/unified-parameter-api.ts +23 -14
  255. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  256. package/src/context/polyfill/context-data.ts +30 -0
  257. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  258. package/src/context/polyfill/polyfill-context.ts +10 -9
  259. package/src/context/polyfill/polyfill-table.ts +21 -16
  260. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  261. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  262. package/src/context/state-tracker/track-context-state.ts +14 -11
  263. package/src/context/state-tracker/with-parameters.ts +13 -4
  264. package/src/index.ts +70 -35
  265. package/src/types.ts +5 -0
  266. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  267. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  268. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  269. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  270. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  271. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  272. package/dist/adapter/helpers/attribute-utils.js +0 -81
  273. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  274. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  275. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  276. package/dist/adapter/helpers/uniforms.js +0 -99
  277. package/dist/adapter/helpers/uniforms.js.map +0 -1
  278. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  279. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  280. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  281. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  282. package/dist/bundle.d.ts +0 -2
  283. package/dist/bundle.d.ts.map +0 -1
  284. package/dist/bundle.js +0 -5
  285. package/dist/bundle.js.map +0 -1
  286. package/dist/classic/buffer.d.ts +0 -95
  287. package/dist/classic/buffer.d.ts.map +0 -1
  288. package/dist/classic/buffer.js +0 -384
  289. package/dist/classic/buffer.js.map +0 -1
  290. package/dist/context/context/context-state.d.ts +0 -18
  291. package/dist/context/context/context-state.d.ts.map +0 -1
  292. package/dist/context/context/context-state.js +0 -26
  293. package/dist/context/context/context-state.js.map +0 -1
  294. package/dist/context/context/create-context.d.ts +0 -41
  295. package/dist/context/context/create-context.d.ts.map +0 -1
  296. package/dist/context/context/create-context.js +0 -49
  297. package/dist/context/context/create-context.js.map +0 -1
  298. package/dist/context/context/device-pixels.d.ts +0 -25
  299. package/dist/context/context/device-pixels.d.ts.map +0 -1
  300. package/dist/context/context/device-pixels.js +0 -98
  301. package/dist/context/context/device-pixels.js.map +0 -1
  302. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  303. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  304. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  305. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  306. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  307. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  308. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  309. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  310. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  311. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  312. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  313. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  314. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  315. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  316. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  317. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  318. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  319. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  320. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  321. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  322. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  323. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  324. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  325. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  326. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  327. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  328. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  329. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  330. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  331. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  332. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  333. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  334. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  335. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  336. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  337. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  339. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  341. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  343. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  345. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  347. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  349. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  351. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  353. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  354. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  355. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  356. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  357. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  358. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  359. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  360. package/dist/es5/adapter/webgl-device.js +0 -399
  361. package/dist/es5/adapter/webgl-device.js.map +0 -1
  362. package/dist/es5/bundle.js +0 -7
  363. package/dist/es5/bundle.js.map +0 -1
  364. package/dist/es5/classic/accessor.js +0 -181
  365. package/dist/es5/classic/accessor.js.map +0 -1
  366. package/dist/es5/classic/buffer.js +0 -470
  367. package/dist/es5/classic/buffer.js.map +0 -1
  368. package/dist/es5/classic/typed-array-utils.js +0 -126
  369. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  370. package/dist/es5/context/context/context-state.js +0 -31
  371. package/dist/es5/context/context/context-state.js.map +0 -1
  372. package/dist/es5/context/context/create-context.js +0 -69
  373. package/dist/es5/context/context/create-context.js.map +0 -1
  374. package/dist/es5/context/context/device-pixels.js +0 -115
  375. package/dist/es5/context/context/device-pixels.js.map +0 -1
  376. package/dist/es5/context/context/webgl-checks.js +0 -54
  377. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  378. package/dist/es5/context/debug/spector.js +0 -133
  379. package/dist/es5/context/debug/spector.js.map +0 -1
  380. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  381. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  382. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  383. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  384. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  385. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  386. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  387. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  388. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  389. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  390. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  391. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  392. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  393. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  394. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  395. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  396. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  397. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  398. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  399. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  400. package/dist/es5/index.js +0 -276
  401. package/dist/es5/index.js.map +0 -1
  402. package/dist/es5/init.js +0 -10
  403. package/dist/es5/init.js.map +0 -1
  404. package/dist/es5/types/webgl.js +0 -6
  405. package/dist/es5/types/webgl.js.map +0 -1
  406. package/dist/es5/types.js +0 -2
  407. package/dist/es5/types.js.map +0 -1
  408. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  409. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  410. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  411. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  412. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  413. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  414. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  415. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  416. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  417. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  418. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  419. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  420. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  421. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  422. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  423. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  424. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  425. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  426. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  427. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  428. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  429. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  430. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  431. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  432. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  433. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  434. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  435. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  436. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  437. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  438. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  439. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  440. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  441. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  442. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  443. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  445. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  447. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  449. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  450. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  451. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  453. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  455. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  457. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  459. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  460. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  461. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  462. package/dist/esm/adapter/resources/webgl-texture.js +0 -833
  463. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  464. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  465. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  466. package/dist/esm/adapter/webgl-device.js +0 -280
  467. package/dist/esm/adapter/webgl-device.js.map +0 -1
  468. package/dist/esm/bundle.js +0 -5
  469. package/dist/esm/bundle.js.map +0 -1
  470. package/dist/esm/classic/accessor.js +0 -144
  471. package/dist/esm/classic/accessor.js.map +0 -1
  472. package/dist/esm/classic/buffer.js +0 -384
  473. package/dist/esm/classic/buffer.js.map +0 -1
  474. package/dist/esm/classic/typed-array-utils.js +0 -112
  475. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  476. package/dist/esm/context/context/context-state.js +0 -26
  477. package/dist/esm/context/context/context-state.js.map +0 -1
  478. package/dist/esm/context/context/create-context.js +0 -49
  479. package/dist/esm/context/context/create-context.js.map +0 -1
  480. package/dist/esm/context/context/device-pixels.js +0 -98
  481. package/dist/esm/context/context/device-pixels.js.map +0 -1
  482. package/dist/esm/context/context/webgl-checks.js +0 -34
  483. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  484. package/dist/esm/context/debug/spector.js +0 -76
  485. package/dist/esm/context/debug/spector.js.map +0 -1
  486. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  487. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  488. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  489. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  490. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  491. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  492. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  493. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  494. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  495. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  496. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  497. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  498. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  499. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  500. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  501. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  502. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  503. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  504. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  505. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  506. package/dist/esm/index.js +0 -27
  507. package/dist/esm/index.js.map +0 -1
  508. package/dist/esm/init.js +0 -4
  509. package/dist/esm/init.js.map +0 -1
  510. package/dist/esm/types/webgl.js +0 -2
  511. package/dist/esm/types/webgl.js.map +0 -1
  512. package/dist/esm/types.js +0 -2
  513. package/dist/esm/types.js.map +0 -1
  514. package/dist/init.d.ts +0 -2
  515. package/dist/init.d.ts.map +0 -1
  516. package/dist/init.js +0 -4
  517. package/dist/init.js.map +0 -1
  518. package/dist/types/webgl.d.ts +0 -145
  519. package/dist/types/webgl.d.ts.map +0 -1
  520. package/dist/types/webgl.js +0 -2
  521. package/dist/types/webgl.js.map +0 -1
  522. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  523. package/src/adapter/helpers/attribute-utils.ts +0 -61
  524. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  525. package/src/bundle.ts +0 -4
  526. package/src/classic/buffer.ts +0 -474
  527. package/src/context/context/context-state.ts +0 -41
  528. package/src/context/context/create-context.ts +0 -110
  529. package/src/context/context/device-pixels.ts +0 -152
  530. package/src/init.ts +0 -4
  531. package/src/types/webgl.ts +0 -284
@@ -1,833 +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.handle = null;
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({
703
- level = 0,
704
- dataFormat,
705
- format,
706
- type,
707
- width,
708
- height,
709
- depth = 1,
710
- offset = 0,
711
- data,
712
- parameters = {}
713
- }) {
714
- this.trackDeallocatedMemory('Texture');
715
- this.gl.bindTexture(this.target, this.handle);
716
- const webglTextureFormat = getWebGLTextureParameters(this.gl, format);
717
- withParameters(this.gl, parameters, () => {
718
- if (ArrayBuffer.isView(data)) {
719
- this.gl.texImage3D(this.target, level, webglTextureFormat.format, width, height, depth, 0, webglTextureFormat.dataFormat, webglTextureFormat.type, data);
720
- }
721
-
722
- if (data instanceof WEBGLBuffer) {
723
- this.gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle);
724
- this.gl.texImage3D(this.target, level, dataFormat, width, height, depth, 0, format, type, offset);
725
- }
726
- });
727
-
728
- if (data && data.byteLength) {
729
- this.trackAllocatedMemory(data.byteLength, 'Texture');
730
- } else {
731
- const bytesPerPixel = getTextureFormatBytesPerPixel(this.gl, this.props.format);
732
- this.trackAllocatedMemory(this.width * this.height * this.depth * bytesPerPixel, 'Texture');
733
- }
734
-
735
- this.loaded = true;
736
- return this;
737
- }
738
-
739
- _setSamplerParameters(parameters) {
740
- if (this.device.isWebGL1 && isNPOT(this.width, this.height)) {
741
- parameters = updateSamplerParametersForNPOT(parameters);
742
- }
743
-
744
- if (isObjectEmpty(parameters)) {
745
- return;
746
- }
747
-
748
- logParameters(parameters);
749
- this.gl.bindTexture(this.target, this.handle);
750
-
751
- for (const [pname, pvalue] of Object.entries(parameters)) {
752
- const param = Number(pname);
753
- let value = pvalue;
754
-
755
- switch (param) {
756
- case GL.TEXTURE_MIN_LOD:
757
- case GL.TEXTURE_MAX_LOD:
758
- this.gl.texParameterf(this.target, param, value);
759
- break;
760
-
761
- default:
762
- this.gl.texParameteri(this.target, param, value);
763
- break;
764
- }
765
- }
766
-
767
- this.gl.bindTexture(this.target, null);
768
- return this;
769
- }
770
-
771
- _getWebGL1NPOTParameterOverride(pname, value) {
772
- const npot = this.device.isWebGL1 && isNPOT(this.width, this.height);
773
-
774
- if (npot) {
775
- switch (pname) {
776
- case GL.TEXTURE_MIN_FILTER:
777
- if (value !== GL.LINEAR && value !== GL.NEAREST) {
778
- return GL.LINEAR;
779
- }
780
-
781
- break;
782
-
783
- case GL.TEXTURE_WRAP_S:
784
- case GL.TEXTURE_WRAP_T:
785
- return GL.CLAMP_TO_EDGE;
786
-
787
- default:
788
- break;
789
- }
790
- }
791
-
792
- return value;
793
- }
794
-
795
- }
796
-
797
- _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]);
798
-
799
- function getWebGLTextureTarget(props) {
800
- switch (props.dimension) {
801
- case '2d':
802
- return GL.TEXTURE_2D;
803
-
804
- case 'cube':
805
- return GL.TEXTURE_CUBE_MAP;
806
-
807
- case '2d-array':
808
- return GL.TEXTURE_2D_ARRAY;
809
-
810
- case '3d':
811
- return GL.TEXTURE_3D;
812
-
813
- case '1d':
814
- case 'cube-array':
815
- default:
816
- throw new Error(props.dimension);
817
- }
818
- }
819
-
820
- function isNPOT(width, height) {
821
- if (!width || !height) {
822
- return false;
823
- }
824
-
825
- return !isPowerOfTwo(width) || !isPowerOfTwo(height);
826
- }
827
-
828
- function logParameters(parameters) {
829
- log.log(1, 'texture sampler parameters', parameters)();
830
-
831
- for (const [pname, pvalue] of Object.entries(parameters)) {}
832
- }
833
- //# sourceMappingURL=webgl-texture.js.map