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