@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,965 +0,0 @@
1
- import {Device, log, assert, uid, isPowerOfTwo} from '@luma.gl/api';
2
- import {Texture, TextureProps} from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import {isWebGL2, assertWebGL2Context} from '../context/context/webgl-checks';
5
- import {withParameters} from '../context/state-tracker/with-parameters';
6
- import {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';
7
- import WebGLDevice from '../adapter/webgl-device';
8
- import Buffer from './webgl-buffer';
9
- import {
10
- TEXTURE_FORMATS,
11
- DATA_FORMAT_CHANNELS,
12
- TYPE_SIZES,
13
- isFormatSupported,
14
- isLinearFilteringSupported
15
- } from './texture-formats';
16
-
17
- export type {TextureProps};
18
-
19
- export type TextureSupportOptions = {
20
- format?: any;
21
- linearFiltering?: any;
22
- };
23
-
24
- // Supported min filters for NPOT texture.
25
- const NPOT_MIN_FILTERS = [GL.LINEAR, GL.NEAREST];
26
-
27
- // Polyfill
28
- export default class WEBGLTexture extends Texture {
29
- readonly MAX_ATTRIBUTES: number;
30
- readonly device: WebGLDevice;
31
- readonly gl: WebGLRenderingContext;
32
- readonly gl2: WebGL2RenderingContext | null;
33
- readonly handle: WebGLTexture;
34
-
35
- data;
36
-
37
- width: number;
38
- height: number;
39
- depth: number;
40
-
41
- format = undefined;
42
- type = undefined;
43
- dataFormat = undefined;
44
- border = undefined;
45
- mipmaps: boolean = undefined;
46
-
47
- target: GL;
48
- textureUnit: number = undefined;
49
-
50
- // Program.draw() checks the loaded flag of all textures to avoid
51
- // Textures that are still loading from promises
52
- // Set to true as soon as texture has been initialized with valid data
53
- loaded = false;
54
- _video;
55
-
56
- static isSupported(
57
- device: Device | WebGLRenderingContext,
58
- options?: TextureSupportOptions
59
- ): boolean {
60
- const webglDevice = WebGLDevice.attach(device);
61
- const {format, linearFiltering} = options;
62
- let supported = true;
63
- if (format) {
64
- supported = supported && isFormatSupported(webglDevice.gl, format);
65
- supported = supported && (!linearFiltering || isLinearFilteringSupported(webglDevice.gl, format));
66
- }
67
- return supported;
68
- }
69
-
70
- // target cannot be modified by bind:
71
- // textures are special because when you first bind them to a target,
72
- // they get special information. When you first bind a texture as a
73
- // GL_TEXTURE_2D, you are actually setting special state in the texture.
74
- // You are saying that this texture is a 2D texture.
75
- // And it will always be a 2D texture; this state cannot be changed ever.
76
- // If you have a texture that was first bound as a GL_TEXTURE_2D,
77
- // you must always bind it as a GL_TEXTURE_2D;
78
- // attempting to bind it as GL_TEXTURE_1D will give rise to an error
79
- // (while run-time).
80
- constructor(device: Device | WebGLRenderingContext, props: TextureProps) {
81
- super(WebGLDevice.attach(device), props);
82
-
83
- const {
84
- id = uid('texture'),
85
- handle,
86
- target
87
- // , magFilter, minFilter, wrapS, wrapT
88
- } = props;
89
-
90
- this.target = target;
91
- this.textureUnit = undefined;
92
-
93
- // Program.draw() checks the loaded flag of all textures to avoid
94
- // Textures that are still loading from promises
95
- // Set to true as soon as texture has been initialized with valid data
96
- this.loaded = false;
97
-
98
- this.width = undefined;
99
- this.height = undefined;
100
- this.depth = undefined;
101
- this.format = undefined;
102
- this.type = undefined;
103
- this.dataFormat = undefined;
104
- this.border = undefined;
105
- this.textureUnit = undefined;
106
- this.mipmaps = undefined;
107
-
108
- this.device = WebGLDevice.attach(device);
109
- this.gl = this.device.gl;
110
- this.gl2 = this.device.gl2;
111
- this.handle = this.props.handle || this.gl.createTexture();
112
- }
113
-
114
- destroy(): void {
115
- if (this.handle) {
116
- this.gl.deleteTexture(this.handle);
117
- this.removeStats();
118
- this.trackDeallocatedMemory('Texture');
119
- // @ts-expect-error
120
- this.handle = null;
121
- }
122
- }
123
-
124
- toString(): string {
125
- return `Texture(${this.id},${this.width}x${this.height})`;
126
- }
127
-
128
- // eslint-disable-next-line max-statements
129
- initialize(props: TextureProps = {}): this {
130
- let data = props.data;
131
-
132
- if (data instanceof Promise) {
133
- data.then((resolvedImageData) =>
134
- this.initialize(
135
- Object.assign({}, props, {
136
- pixels: resolvedImageData,
137
- data: resolvedImageData
138
- })
139
- )
140
- );
141
- return this;
142
- }
143
- const isVideo = typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement;
144
- // @ts-expect-error
145
- if (isVideo && data.readyState < HTMLVideoElement.HAVE_METADATA) {
146
- this._video = null; // Declare member before the object is sealed
147
- data.addEventListener('loadeddata', () => this.initialize(props));
148
- return this;
149
- }
150
-
151
- const {
152
- pixels = null,
153
- format = GL.RGBA,
154
- border = 0,
155
- recreate = false,
156
- parameters = {},
157
- pixelStore = {},
158
- textureUnit = undefined
159
- } = props;
160
-
161
- // pixels variable is for API compatibility purpose
162
- if (!data) {
163
- // TODO - This looks backwards? Commenting out for now until we decide
164
- // which prop to use
165
- // log.deprecated('data', 'pixels')();
166
- data = pixels;
167
- }
168
-
169
- let {width, height, dataFormat, type, compressed = false, mipmaps = true} = props;
170
- const {depth = 0} = props;
171
-
172
- // Deduce width and height
173
- ({width, height, compressed, dataFormat, type} = this._deduceParameters({
174
- format,
175
- type,
176
- dataFormat,
177
- compressed,
178
- data,
179
- width,
180
- height
181
- }));
182
-
183
- // Store opts for accessors
184
- this.width = width;
185
- this.height = height;
186
- this.depth = depth;
187
- this.format = format;
188
- this.type = type;
189
- this.dataFormat = dataFormat;
190
- this.border = border;
191
- this.textureUnit = textureUnit;
192
-
193
- if (Number.isFinite(this.textureUnit)) {
194
- this.gl.activeTexture(GL.TEXTURE0 + this.textureUnit);
195
- this.gl.bindTexture(this.target, this.handle);
196
- }
197
-
198
- if (mipmaps && this._isNPOT()) {
199
- log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();
200
- mipmaps = false;
201
-
202
- this._updateForNPOT(parameters);
203
- }
204
-
205
- this.mipmaps = mipmaps;
206
-
207
- this.setImageData({
208
- data,
209
- width,
210
- height,
211
- depth,
212
- format,
213
- type,
214
- dataFormat,
215
- border,
216
- mipmaps,
217
- parameters: pixelStore,
218
- compressed
219
- });
220
-
221
- if (mipmaps) {
222
- this.generateMipmap();
223
- }
224
-
225
- // Set texture sampler parameters
226
- this.setParameters(parameters);
227
-
228
- // TODO - Store data to enable auto recreate on context loss
229
- if (recreate) {
230
- this.data = data;
231
- }
232
- if (isVideo) {
233
- this._video = {
234
- video: data,
235
- parameters,
236
- // @ts-expect-error
237
- lastTime: data.readyState >= HTMLVideoElement.HAVE_CURRENT_DATA ? data.currentTime : -1
238
- };
239
- }
240
-
241
- return this;
242
- }
243
-
244
- update(): this {
245
- if (this._video) {
246
- const {video, parameters, lastTime} = this._video;
247
- // @ts-expect-error
248
- if (lastTime === video.currentTime || video.readyState < HTMLVideoElement.HAVE_CURRENT_DATA) {
249
- return;
250
- }
251
- this.setSubImageData({
252
- data: video,
253
- parameters
254
- });
255
- if (this.mipmaps) {
256
- this.generateMipmap();
257
- }
258
- this._video.lastTime = video.currentTime;
259
- }
260
- }
261
-
262
- // If size has changed, reinitializes with current format
263
- // note clears image and mipmaps
264
- resize({height, width, mipmaps = false}): this {
265
- if (width !== this.width || height !== this.height) {
266
- return this.initialize({
267
- width,
268
- height,
269
- format: this.format,
270
- type: this.type,
271
- dataFormat: this.dataFormat,
272
- border: this.border,
273
- mipmaps
274
- });
275
- }
276
- return this;
277
- }
278
-
279
- // Call to regenerate mipmaps after modifying texture(s)
280
- generateMipmap(params = {}): this {
281
- if (this._isNPOT()) {
282
- log.warn(`texture: ${this} is Non-Power-Of-Two, disabling mipmaping`)();
283
- return this;
284
- }
285
-
286
- this.mipmaps = true;
287
-
288
- this.gl.bindTexture(this.target, this.handle);
289
- withParameters(this.gl, params, () => {
290
- this.gl.generateMipmap(this.target);
291
- });
292
- this.gl.bindTexture(this.target, null);
293
- return this;
294
- }
295
-
296
- /*
297
- * Allocates storage
298
- * @param {*} pixels -
299
- * null - create empty texture of specified format
300
- * Typed array - init from image data in typed array
301
- * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer
302
- * HTMLImageElement|Image - Inits with content of image. Auto width/height
303
- * HTMLCanvasElement - Inits with contents of canvas. Auto width/height
304
- * HTMLVideoElement - Creates video texture. Auto width/height
305
- *
306
- * @param {GLint} width -
307
- * @param {GLint} height -
308
- * @param {GLint} mipMapLevel -
309
- * @param {GLenum} format - format of image data.
310
- * @param {GLenum} type
311
- * - format of array (autodetect from type) or
312
- * - (WEBGL2) format of buffer
313
- * @param {Number} offset - (WEBGL2) offset from start of buffer
314
- * @param {GLint} border - must be 0.
315
- * @parameters - temporary settings to be applied, can be used to supply pixel store settings.
316
- */
317
- // eslint-disable-next-line max-statements, complexity
318
- setImageData(options) {
319
- this.trackDeallocatedMemory('Texture');
320
-
321
- const {
322
- target = this.target,
323
- pixels = null,
324
- level = 0,
325
- format = this.format,
326
- border = this.border,
327
- offset = 0,
328
- parameters = {}
329
- } = options;
330
-
331
- let {
332
- data = null,
333
- type = this.type,
334
- width = this.width,
335
- height = this.height,
336
- dataFormat = this.dataFormat,
337
- compressed = false
338
- } = options;
339
-
340
- // pixels variable is for API compatibility purpose
341
- if (!data) {
342
- data = pixels;
343
- }
344
-
345
- ({type, dataFormat, compressed, width, height} = this._deduceParameters({
346
- format,
347
- type,
348
- dataFormat,
349
- compressed,
350
- data,
351
- width,
352
- height
353
- }));
354
-
355
- const {gl} = this;
356
- gl.bindTexture(this.target, this.handle);
357
-
358
- let dataType = null;
359
- ({data, dataType} = this._getDataType({data, compressed}));
360
-
361
- let gl2;
362
-
363
- withParameters(this.gl, parameters, () => {
364
- switch (dataType) {
365
- case 'null':
366
- gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);
367
- break;
368
- case 'typed-array':
369
- // Looks like this assert is not necessary, as offset is ignored under WebGL1
370
- // assert((offset === 0 || isWebGL2(gl)), 'offset supported in WebGL2 only');
371
- gl.texImage2D(
372
- target,
373
- level,
374
- format,
375
- width,
376
- height,
377
- border,
378
- dataFormat,
379
- type,
380
- data,
381
- // @ts-expect-error
382
- offset
383
- );
384
- break;
385
- case 'buffer':
386
- // WebGL2 enables creating textures directly from a WebGL buffer
387
- gl2 = assertWebGL2Context(gl);
388
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data.handle || data);
389
- gl2.texImage2D(target, level, format, width, height, border, dataFormat, type, offset);
390
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
391
- break;
392
- case 'browser-object':
393
- if (isWebGL2(gl)) {
394
- gl.texImage2D(target, level, format, width, height, border, dataFormat, type, data);
395
- } else {
396
- gl.texImage2D(target, level, format, dataFormat, type, data);
397
- }
398
- break;
399
- case 'compressed':
400
- for (const [levelIndex, levelData] of data.entries()) {
401
- gl.compressedTexImage2D(
402
- target,
403
- levelIndex,
404
- levelData.format,
405
- levelData.width,
406
- levelData.height,
407
- border,
408
- levelData.data
409
- );
410
- }
411
-
412
- break;
413
- default:
414
- assert(false, 'Unknown image data type');
415
- }
416
- });
417
-
418
- if (data && data.byteLength) {
419
- this.trackAllocatedMemory(data.byteLength, 'Texture');
420
- } else {
421
- // NOTE(Tarek): Default to RGBA bytes
422
- const channels = DATA_FORMAT_CHANNELS[this.dataFormat] || 4;
423
- const channelSize = TYPE_SIZES[this.type] || 1;
424
-
425
- this.trackAllocatedMemory(this.width * this.height * channels * channelSize, 'Texture');
426
- }
427
-
428
- this.loaded = true;
429
-
430
- return this;
431
- }
432
-
433
- /**
434
- * Redefines an area of an existing texture
435
- * Note: does not allocate storage
436
- */
437
- /*
438
- * Redefines an area of an existing texture
439
- * @param {*} pixels, data -
440
- * null - create empty texture of specified format
441
- * Typed array - init from image data in typed array
442
- * Buffer|WebGLBuffer - (WEBGL2) init from image data in WebGLBuffer
443
- * HTMLImageElement|Image - Inits with content of image. Auto width/height
444
- * HTMLCanvasElement - Inits with contents of canvas. Auto width/height
445
- * HTMLVideoElement - Creates video texture. Auto width/height
446
- *
447
- * @param {GLint} x - xOffset from where texture to be updated
448
- * @param {GLint} y - yOffset from where texture to be updated
449
- * @param {GLint} width - width of the sub image to be updated
450
- * @param {GLint} height - height of the sub image to be updated
451
- * @param {GLint} level - mip level to be updated
452
- * @param {GLenum} format - internal format of image data.
453
- * @param {GLenum} type
454
- * - format of array (autodetect from type) or
455
- * - (WEBGL2) format of buffer or ArrayBufferView
456
- * @param {GLenum} dataFormat - format of image data.
457
- * @param {Number} offset - (WEBGL2) offset from start of buffer
458
- * @param {GLint} border - must be 0.
459
- * @parameters - temporary settings to be applied, can be used to supply pixel store settings.
460
- */
461
- setSubImageData({
462
- target = this.target,
463
- pixels = null,
464
- data = null,
465
- x = 0,
466
- y = 0,
467
- width = this.width,
468
- height = this.height,
469
- level = 0,
470
- format = this.format,
471
- type = this.type,
472
- dataFormat = this.dataFormat,
473
- compressed = false,
474
- offset = 0,
475
- border = this.border,
476
- parameters = {}
477
- }) {
478
- ({type, dataFormat, compressed, width, height} = this._deduceParameters({
479
- format,
480
- type,
481
- dataFormat,
482
- compressed,
483
- data,
484
- width,
485
- height
486
- }));
487
-
488
- assert(this.depth === 0, 'texSubImage not supported for 3D textures');
489
-
490
- // pixels variable is for API compatibility purpose
491
- if (!data) {
492
- data = pixels;
493
- }
494
-
495
- // Support ndarrays
496
- if (data && data.data) {
497
- const ndarray = data;
498
- data = ndarray.data;
499
- width = ndarray.shape[0];
500
- height = ndarray.shape[1];
501
- }
502
-
503
- // Support buffers
504
- if (data instanceof Buffer) {
505
- data = data.handle;
506
- }
507
-
508
- this.gl.bindTexture(this.target, this.handle);
509
-
510
- withParameters(this.gl, parameters, () => {
511
- // TODO - x,y parameters
512
- if (compressed) {
513
- this.gl.compressedTexSubImage2D(target, level, x, y, width, height, format, data);
514
- } else if (data === null) {
515
- this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, null);
516
- } else if (ArrayBuffer.isView(data)) {
517
- // const gl2 = assertWebGL2Context(this.gl);
518
- // @ts-expect-error last offset parameter is ignored under WebGL1
519
- this.gl.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data, offset);
520
- } else if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
521
- // WebGL2 allows us to create texture directly from a WebGL buffer
522
- const gl2 = assertWebGL2Context(this.gl);
523
- // This texImage2D signature uses currently bound GL.PIXEL_UNPACK_BUFFER
524
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, data);
525
- gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, offset);
526
- gl2.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
527
- } else if (isWebGL2(this.gl)) {
528
- // Assume data is a browser supported object (ImageData, Canvas, ...)
529
- const gl2 = assertWebGL2Context(this.gl);
530
- gl2.texSubImage2D(target, level, x, y, width, height, dataFormat, type, data);
531
- } else {
532
- this.gl.texSubImage2D(target, level, x, y, dataFormat, type, data);
533
- }
534
- });
535
-
536
- this.gl.bindTexture(this.target, null);
537
- }
538
-
539
- /**
540
- * Defines a two-dimensional texture image or cube-map texture image with
541
- * pixels from the current framebuffer (rather than from client memory).
542
- * (gl.copyTexImage2D wrapper)
543
- *
544
- * Note that binding a texture into a Framebuffer's color buffer and
545
- * rendering can be faster.
546
- */
547
- copyFramebuffer(opts = {}) {
548
- log.error(
549
- 'Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})'
550
- )();
551
- return null;
552
- }
553
-
554
- getActiveUnit(): number {
555
- return this.gl.getParameter(GL.ACTIVE_TEXTURE) - GL.TEXTURE0;
556
- }
557
-
558
- // target cannot be modified by bind:
559
- // textures are special because when you first bind them to a target,
560
- // they get special information. When you first bind a texture as a
561
- // GL_TEXTURE_2D, you are actually setting special state in the texture.
562
- // You are saying that this texture is a 2D texture.
563
- // And it will always be a 2D texture; this state cannot be changed ever.
564
- // If you have a texture that was first bound as a GL_TEXTURE_2D,
565
- // you must always bind it as a GL_TEXTURE_2D;
566
- // attempting to bind it as GL_TEXTURE_1D will give rise to an error
567
- // (while run-time).
568
-
569
- bind(textureUnit = this.textureUnit) {
570
- const {gl} = this;
571
-
572
- if (textureUnit !== undefined) {
573
- this.textureUnit = textureUnit;
574
- gl.activeTexture(gl.TEXTURE0 + textureUnit);
575
- }
576
-
577
- gl.bindTexture(this.target, this.handle);
578
- return textureUnit;
579
- }
580
-
581
- unbind(textureUnit = this.textureUnit) {
582
- const {gl} = this;
583
-
584
- if (textureUnit !== undefined) {
585
- this.textureUnit = textureUnit;
586
- gl.activeTexture(gl.TEXTURE0 + textureUnit);
587
- }
588
-
589
- gl.bindTexture(this.target, null);
590
- return textureUnit;
591
- }
592
-
593
- // PRIVATE METHODS
594
-
595
- _getDataType({data, compressed = false}) {
596
- if (compressed) {
597
- return {data, dataType: 'compressed'};
598
- }
599
- if (data === null) {
600
- return {data, dataType: 'null'};
601
- }
602
- if (ArrayBuffer.isView(data)) {
603
- return {data, dataType: 'typed-array'};
604
- }
605
- if (data instanceof Buffer) {
606
- return {data: data.handle, dataType: 'buffer'};
607
- }
608
- if (typeof WebGLBuffer !== 'undefined' && data instanceof WebGLBuffer) {
609
- return {data, dataType: 'buffer'};
610
- }
611
- // Assume data is a browser supported object (ImageData, Canvas, ...)
612
- return {data, dataType: 'browser-object'};
613
- }
614
-
615
- /* Copied from texture-2d.js
616
- // WebGL2
617
- setPixels(opts = {}) {
618
- const {
619
- buffer,
620
- width = null,
621
- height = null,
622
- mipmapLevel = 0,
623
- format = GL.RGBA,
624
- type = GL.UNSIGNED_BYTE,
625
- border = 0
626
- } = opts;
627
-
628
- const {gl} = this;
629
-
630
- // This signature of texImage2D uses currently bound GL.PIXEL_UNPACK_BUFFER
631
- gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, buffer.target);
632
- // And as always, we must also bind the texture itself
633
- this.bind();
634
-
635
- gl.texImage2D(gl.TEXTURE_2D,
636
- mipmapLevel, format, width, height, border, format, type, buffer.target);
637
-
638
- this.unbind();
639
- gl.bindBuffer(GL.GL.PIXEL_UNPACK_BUFFER, null);
640
- return this;
641
- }
642
-
643
- setImageDataFromCompressedBuffer(opts) {
644
- const {
645
- buffer,
646
- // offset = 0,
647
- width = null,
648
- height = null,
649
- mipmapLevel = 0,
650
- internalFormat = GL.RGBA,
651
- // format = GL.RGBA,
652
- // type = GL.UNSIGNED_BYTE,
653
- border = 0
654
- } = opts;
655
-
656
- const {gl} = this;
657
- gl.compressedTexImage2D(this.target,
658
- mipmapLevel, internalFormat, width, height, border, buffer);
659
- // gl.compressedTexSubImage2D(target,
660
- // level, xoffset, yoffset, width, height, format, ArrayBufferView? pixels);
661
- return this;
662
- }
663
-
664
- copySubImage(opts) {
665
- const {
666
- // pixels,
667
- // offset = 0,
668
- // x,
669
- // y,
670
- // width,
671
- // height,
672
- // mipmapLevel = 0,
673
- // internalFormat = GL.RGBA,
674
- // type = GL.UNSIGNED_BYTE,
675
- // border = 0
676
- } = opts;
677
-
678
- // if (pixels instanceof ArrayBufferView) {
679
- // gl.texSubImage2D(target, level, x, y, width, height, format, type, pixels);
680
- // }
681
- // gl.texSubImage2D(target, level, x, y, format, type, ? pixels);
682
- // gl.texSubImage2D(target, level, x, y, format, type, HTMLImageElement pixels);
683
- // gl.texSubImage2D(target, level, x, y, format, type, HTMLCanvasElement pixels);
684
- // gl.texSubImage2D(target, level, x, y, format, type, HTMLVideoElement pixels);
685
- // // Additional signature in a WebGL 2 context:
686
- // gl.texSubImage2D(target, level, x, y, format, type, GLintptr offset);
687
- }
688
- */
689
-
690
- // HELPER METHODS
691
-
692
- _deduceParameters(opts) {
693
- const {format, data} = opts;
694
- let {width, height, dataFormat, type, compressed} = opts;
695
-
696
- // Deduce format and type from format
697
- const textureFormat = TEXTURE_FORMATS[format];
698
- dataFormat = dataFormat || (textureFormat && textureFormat.dataFormat);
699
- type = type || (textureFormat && textureFormat.types[0]);
700
-
701
- // Deduce compression from format
702
- compressed = compressed || (textureFormat && textureFormat.compressed);
703
-
704
- ({width, height} = this._deduceImageSize(data, width, height));
705
-
706
- return {dataFormat, type, compressed, width, height, format, data};
707
- }
708
-
709
- // eslint-disable-next-line complexity
710
- _deduceImageSize(data, width, height): {width: number, height: number} {
711
- let size;
712
-
713
- if (typeof ImageData !== 'undefined' && data instanceof ImageData) {
714
- size = {width: data.width, height: data.height};
715
- } else if (typeof HTMLImageElement !== 'undefined' && data instanceof HTMLImageElement) {
716
- size = {width: data.naturalWidth, height: data.naturalHeight};
717
- } else if (typeof HTMLCanvasElement !== 'undefined' && data instanceof HTMLCanvasElement) {
718
- size = {width: data.width, height: data.height};
719
- } else if (typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) {
720
- size = {width: data.width, height: data.height};
721
- } else if (typeof HTMLVideoElement !== 'undefined' && data instanceof HTMLVideoElement) {
722
- size = {width: data.videoWidth, height: data.videoHeight};
723
- } else if (!data) {
724
- size = {width: width >= 0 ? width : 1, height: height >= 0 ? height : 1};
725
- } else {
726
- size = {width, height};
727
- }
728
-
729
- assert(size, 'Could not deduced texture size');
730
- assert(
731
- width === undefined || size.width === width,
732
- 'Deduced texture width does not match supplied width'
733
- );
734
- assert(
735
- height === undefined || size.height === height,
736
- 'Deduced texture height does not match supplied height'
737
- );
738
-
739
- return size;
740
- }
741
-
742
- // RESOURCE METHODS
743
-
744
- /**
745
- * Query a Resource parameter
746
- *
747
- * @param name
748
- * @return param
749
- */
750
- getParameter(pname: number, props = {}): any {
751
- pname = getKeyValue(this.gl, pname);
752
- assert(pname);
753
-
754
- // @ts-expect-error
755
- const parameters = this.constructor.PARAMETERS || {};
756
-
757
- // Use parameter definitions to handle unsupported parameters
758
- const parameter = parameters[pname];
759
- if (parameter) {
760
- const isWebgl2 = isWebGL2(this.gl);
761
-
762
- // Check if we can query for this parameter
763
- const parameterAvailable =
764
- (!('webgl2' in parameter) || isWebgl2) &&
765
- (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
766
-
767
- if (!parameterAvailable) {
768
- const webgl1Default = parameter.webgl1;
769
- const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;
770
- const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;
771
- return defaultValue;
772
- }
773
- }
774
-
775
- // If unknown parameter - Could be a valid parameter not covered by PARAMS
776
- // Attempt to query for it and let WebGL report errors
777
- return this._getParameter(pname, props);
778
- }
779
-
780
- // Many resources support a getParameter call -
781
- // getParameters will get all parameters - slow but useful for debugging
782
- // eslint-disable-next-line complexity
783
- getParameters(options: {parameters?, keys?} = {}) {
784
- const {parameters, keys} = options;
785
-
786
- // Get parameter definitions for this Resource
787
- // @ts-expect-error
788
- const PARAMETERS = this.constructor.PARAMETERS || {};
789
-
790
- const isWebgl2 = isWebGL2(this.gl);
791
-
792
- const values = {};
793
-
794
- // Query all parameters if no list provided
795
- const parameterKeys = parameters || Object.keys(PARAMETERS);
796
-
797
- // WEBGL limits
798
- for (const pname of parameterKeys) {
799
- const parameter = PARAMETERS[pname];
800
-
801
- // Check if this parameter is available on this platform
802
- const parameterAvailable =
803
- parameter &&
804
- (!('webgl2' in parameter) || isWebgl2) &&
805
- (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
806
-
807
- if (parameterAvailable) {
808
- const key = keys ? getKey(this.gl, pname) : pname;
809
- values[key] = this.getParameter(pname, options);
810
- if (keys && parameter.type === 'GLenum') {
811
- values[key] = getKey(this.gl, values[key]);
812
- }
813
- }
814
- }
815
-
816
- return values;
817
- }
818
-
819
- /**
820
- * Update a Resource setting
821
- *
822
- * @todo - cache parameter to avoid issuing WebGL calls?
823
- *
824
- * @param {string} pname - parameter (GL constant, value or key)
825
- * @param {GLint|GLfloat|GLenum} value
826
- * @return {Resource} returns self to enable chaining
827
- */
828
- setParameter(pname, value) {
829
- pname = getKeyValue(this.gl, pname);
830
- assert(pname);
831
-
832
- // @ts-expect-error
833
- const parameters = this.constructor.PARAMETERS || {};
834
-
835
- const parameter = parameters[pname];
836
- if (parameter) {
837
- const isWebgl2 = isWebGL2(this.gl);
838
-
839
- // Check if this parameter is available on this platform
840
- const parameterAvailable =
841
- (!('webgl2' in parameter) || isWebgl2) &&
842
- (!('extension' in parameter) || this.gl.getExtension(parameter.extension));
843
-
844
- if (!parameterAvailable) {
845
- throw new Error('Parameter not available on this platform');
846
- }
847
-
848
- // Handle string keys
849
- if (parameter.type === 'GLenum') {
850
- // @ts-expect-error
851
- value = getKeyValue(value);
852
- }
853
- }
854
-
855
- // If unknown parameter - Could be a valid parameter not covered by PARAMS
856
- // attempt to set it and let WebGL report errors
857
- this._setParameter(pname, value);
858
- return this;
859
- }
860
-
861
- /*
862
- * Batch update resource parameters
863
- * Assumes the subclass supports a setParameter call
864
- */
865
- setParameters(parameters) {
866
- for (const pname in parameters) {
867
- this.setParameter(pname, parameters[pname]);
868
- }
869
- return this;
870
- }
871
-
872
- _getParameter(pname: number, props?): any {
873
- switch (pname) {
874
- case GL.TEXTURE_WIDTH:
875
- return this.width;
876
- case GL.TEXTURE_HEIGHT:
877
- return this.height;
878
- default:
879
- this.gl.bindTexture(this.target, this.handle);
880
- const value = this.gl.getTexParameter(this.target, pname);
881
- this.gl.bindTexture(this.target, null);
882
- return value;
883
- }
884
- }
885
-
886
- _setParameter(pname: number, param: number): this {
887
- this.gl.bindTexture(this.target, this.handle);
888
-
889
- // NOTE: Apply NPOT workaround
890
- param = this._getNPOTParam(pname, param);
891
-
892
- // Apparently there are some integer/float conversion rules that made
893
- // the WebGL committe expose two parameter setting functions in JavaScript.
894
- // For now, pick the float version for parameters specified as GLfloat.
895
- switch (pname) {
896
- case GL.TEXTURE_MIN_LOD:
897
- case GL.TEXTURE_MAX_LOD:
898
- this.gl.texParameterf(this.target, pname, param);
899
- break;
900
-
901
- case GL.TEXTURE_WIDTH:
902
- case GL.TEXTURE_HEIGHT:
903
- assert(false);
904
- break;
905
-
906
- default:
907
- this.gl.texParameteri(this.target, pname, param);
908
- break;
909
- }
910
-
911
- this.gl.bindTexture(this.target, null);
912
- return this;
913
- }
914
-
915
- _isNPOT(): boolean {
916
- if (isWebGL2(this.gl)) {
917
- // NPOT restriction is only for WebGL1
918
- return false;
919
- }
920
- // Width and height not available, consider it is not NPOT texture
921
- if (!this.width || !this.height) {
922
- return false;
923
- }
924
- return !isPowerOfTwo(this.width) || !isPowerOfTwo(this.height);
925
- }
926
-
927
- // Update default settings which are not supported by NPOT textures.
928
- _updateForNPOT(parameters) {
929
- if (parameters[this.gl.TEXTURE_MIN_FILTER] === undefined) {
930
- // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();
931
- parameters[this.gl.TEXTURE_MIN_FILTER] = this.gl.LINEAR;
932
- }
933
- if (parameters[this.gl.TEXTURE_WRAP_S] === undefined) {
934
- // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_S to CLAMP_TO_EDGE`)();
935
- parameters[this.gl.TEXTURE_WRAP_S] = this.gl.CLAMP_TO_EDGE;
936
- }
937
- if (parameters[this.gl.TEXTURE_WRAP_T] === undefined) {
938
- // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_WRAP_T to CLAMP_TO_EDGE`)();
939
- parameters[this.gl.TEXTURE_WRAP_T] = this.gl.CLAMP_TO_EDGE;
940
- }
941
- }
942
-
943
- _getNPOTParam(pname: number, param: number): number {
944
- if (this._isNPOT()) {
945
- switch (pname) {
946
- case GL.TEXTURE_MIN_FILTER:
947
- if (NPOT_MIN_FILTERS.indexOf(param) === -1) {
948
- // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();
949
- param = GL.LINEAR;
950
- }
951
- break;
952
- case GL.TEXTURE_WRAP_S:
953
- case GL.TEXTURE_WRAP_T:
954
- if (param !== GL.CLAMP_TO_EDGE) {
955
- // log.warn(`texture: ${this} is Non-Power-Of-Two, ${getKey(this.gl, pname)} to CLAMP_TO_EDGE`)();
956
- param = GL.CLAMP_TO_EDGE;
957
- }
958
- break;
959
- default:
960
- break;
961
- }
962
- }
963
- return param;
964
- }
965
- }