@luma.gl/webgl 8.6.0-alpha.4 → 9.0.0-alpha.10

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