@luma.gl/webgl 9.0.0-alpha.2 → 9.0.0-alpha.21

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