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

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 (749) hide show
  1. package/README.md +3 -67
  2. package/dist/adapter/converters/device-parameters.d.ts +17 -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} +36 -5
  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 +208 -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 +27 -48
  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 +306 -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 +40 -0
  85. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-framebuffer.js +265 -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 +19 -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 +400 -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 +13 -20
  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} +274 -229
  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 +58 -76
  113. package/dist/adapter/webgl-device.d.ts.map +1 -1
  114. package/dist/adapter/webgl-device.js +184 -111
  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} +53 -51
  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 +1 -0
  132. package/dist/context/context/create-context.d.ts.map +1 -1
  133. package/dist/context/context/create-context.js +12 -0
  134. package/dist/context/context/create-context.js.map +1 -1
  135. package/dist/context/context/device-pixels.d.ts +1 -1
  136. package/dist/context/context/device-pixels.d.ts.map +1 -1
  137. package/dist/context/context/device-pixels.js.map +1 -1
  138. package/dist/context/debug/spector.d.ts +18 -0
  139. package/dist/context/debug/spector.d.ts.map +1 -0
  140. package/dist/context/debug/spector.js +76 -0
  141. package/dist/context/debug/spector.js.map +1 -0
  142. package/dist/context/debug/webgl-developer-tools.d.ts +19 -0
  143. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -0
  144. package/dist/context/debug/webgl-developer-tools.js +121 -0
  145. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  146. package/dist/context/parameters/unified-parameter-api.d.ts +3 -2
  147. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  148. package/dist/context/parameters/unified-parameter-api.js +4 -4
  149. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  150. package/dist/context/parameters/webgl-parameter-tables.d.ts +40 -36
  151. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  152. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  153. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  154. package/dist/context/polyfill/polyfill-context.js +4 -3
  155. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  156. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  157. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  158. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  159. package/dist/context/state-tracker/track-context-state.js +25 -11
  160. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  161. package/dist/es5/adapter/converters/{set-device-parameters.js → device-parameters.js} +37 -5
  162. package/dist/es5/adapter/converters/device-parameters.js.map +1 -0
  163. package/dist/es5/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  164. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -0
  165. package/dist/es5/adapter/converters/sampler-parameters.js +226 -0
  166. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -0
  167. package/dist/es5/adapter/converters/texture-formats.js +1031 -0
  168. package/dist/es5/adapter/converters/texture-formats.js.map +1 -0
  169. package/dist/es5/adapter/converters/vertex-formats.js +45 -0
  170. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -0
  171. package/dist/es5/adapter/device-helpers/device-features.js +46 -54
  172. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  173. package/dist/es5/adapter/device-helpers/device-limits.js +1 -1
  174. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  175. package/dist/es5/adapter/device-helpers/get-device-info.js +7 -7
  176. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  177. package/dist/es5/adapter/helpers/attribute-utils.js +91 -0
  178. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -0
  179. package/dist/es5/{helpers/get-program-bindings.js → adapter/helpers/get-shader-layout.js} +184 -87
  180. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -0
  181. package/dist/es5/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.js +0 -0
  182. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  183. package/dist/es5/adapter/helpers/set-uniform.js +125 -0
  184. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -0
  185. package/dist/es5/adapter/helpers/uniforms.js +112 -0
  186. package/dist/es5/adapter/helpers/uniforms.js.map +1 -0
  187. package/dist/es5/{webgl-utils → adapter/objects}/constants-to-keys.js +1 -0
  188. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -0
  189. package/dist/es5/{classes/renderbuffer.js → adapter/objects/webgl-renderbuffer.js} +48 -98
  190. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -0
  191. package/dist/es5/{classes → adapter/objects}/webgl-resource.js +8 -3
  192. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -0
  193. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +137 -0
  194. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  195. package/dist/es5/adapter/resources/webgl-buffer.js +243 -0
  196. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -0
  197. package/dist/es5/adapter/resources/webgl-command-buffer.js +96 -0
  198. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -0
  199. package/dist/es5/adapter/resources/webgl-command-encoder.js +98 -0
  200. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -0
  201. package/dist/es5/adapter/resources/webgl-external-texture.js +2 -0
  202. package/dist/{esm/helpers/program-bindings.js.map → es5/adapter/resources/webgl-external-texture.js.map} +1 -1
  203. package/dist/es5/adapter/resources/webgl-framebuffer.js +345 -0
  204. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -0
  205. package/dist/es5/{classes/texture-2d.js → adapter/resources/webgl-render-pass.js} +25 -45
  206. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -0
  207. package/dist/es5/adapter/resources/webgl-render-pipeline.js +505 -0
  208. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -0
  209. package/dist/es5/adapter/resources/webgl-sampler.js +96 -0
  210. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -0
  211. package/dist/es5/adapter/{webgl-shader.js → resources/webgl-shader.js} +12 -18
  212. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -0
  213. package/dist/es5/{classes/texture.js → adapter/resources/webgl-texture.js} +336 -260
  214. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -0
  215. package/dist/es5/adapter/webgl-canvas-context.js +97 -0
  216. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -0
  217. package/dist/es5/adapter/webgl-device.js +253 -133
  218. package/dist/es5/adapter/webgl-device.js.map +1 -1
  219. package/dist/es5/{classes → classic}/accessor.js +25 -1
  220. package/dist/es5/classic/accessor.js.map +1 -0
  221. package/dist/es5/{classes/webgl-buffer.js → classic/buffer.js} +74 -66
  222. package/dist/es5/classic/buffer.js.map +1 -0
  223. package/dist/es5/{webgl-utils → classic}/typed-array-utils.js +0 -0
  224. package/dist/es5/classic/typed-array-utils.js.map +1 -0
  225. package/dist/es5/context/context/context-state.js +1 -1
  226. package/dist/es5/context/context/context-state.js.map +1 -1
  227. package/dist/es5/context/context/create-context.js +12 -0
  228. package/dist/es5/context/context/create-context.js.map +1 -1
  229. package/dist/es5/context/context/device-pixels.js.map +1 -1
  230. package/dist/es5/context/debug/spector.js +133 -0
  231. package/dist/es5/context/debug/spector.js.map +1 -0
  232. package/dist/es5/context/debug/webgl-developer-tools.js +198 -0
  233. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -0
  234. package/dist/es5/context/parameters/unified-parameter-api.js +7 -5
  235. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  236. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  237. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  238. package/dist/es5/context/polyfill/polyfill-context.js +4 -3
  239. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  240. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  241. package/dist/es5/context/state-tracker/track-context-state.js +26 -11
  242. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  243. package/dist/es5/index.js +65 -307
  244. package/dist/es5/index.js.map +1 -1
  245. package/dist/es5/init.js +1 -41
  246. package/dist/es5/init.js.map +1 -1
  247. package/dist/es5/{context/parameters/webgl-parameters.js → types/webgl.js} +1 -1
  248. package/dist/es5/types/webgl.js.map +1 -0
  249. package/dist/esm/adapter/converters/{set-device-parameters.js → device-parameters.js} +36 -5
  250. package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
  251. package/dist/esm/{classes → adapter/converters}/renderbuffer-formats.js +1 -1
  252. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -0
  253. package/dist/esm/adapter/converters/sampler-parameters.js +208 -0
  254. package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -0
  255. package/dist/esm/adapter/converters/texture-formats.js +954 -0
  256. package/dist/esm/adapter/converters/texture-formats.js.map +1 -0
  257. package/dist/esm/adapter/converters/vertex-formats.js +35 -0
  258. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -0
  259. package/dist/esm/adapter/device-helpers/device-features.js +27 -48
  260. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  261. package/dist/esm/adapter/device-helpers/device-limits.js +1 -0
  262. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
  263. package/dist/esm/adapter/device-helpers/get-device-info.js +7 -7
  264. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  265. package/dist/esm/adapter/helpers/attribute-utils.js +81 -0
  266. package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -0
  267. package/dist/esm/adapter/helpers/get-shader-layout.js +306 -0
  268. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -0
  269. package/dist/{webgl-utils → esm/adapter/helpers}/parse-shader-compiler-log.js +0 -0
  270. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  271. package/dist/esm/adapter/helpers/set-uniform.js +115 -0
  272. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -0
  273. package/dist/esm/adapter/helpers/uniforms.js +99 -0
  274. package/dist/esm/adapter/helpers/uniforms.js.map +1 -0
  275. package/dist/{webgl-utils → esm/adapter/objects}/constants-to-keys.js +1 -0
  276. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -0
  277. package/dist/{classes/renderbuffer.js → esm/adapter/objects/webgl-renderbuffer.js} +38 -72
  278. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -0
  279. package/dist/esm/{classes → adapter/objects}/webgl-resource.js +7 -3
  280. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -0
  281. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +84 -0
  282. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -0
  283. package/dist/esm/adapter/resources/webgl-buffer.js +164 -0
  284. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -0
  285. package/dist/esm/adapter/resources/webgl-command-buffer.js +65 -0
  286. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -0
  287. package/dist/esm/adapter/resources/webgl-command-encoder.js +53 -0
  288. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -0
  289. package/dist/esm/adapter/resources/webgl-external-texture.js +2 -0
  290. package/dist/{helpers/program-bindings.js.map → esm/adapter/resources/webgl-external-texture.js.map} +1 -1
  291. package/dist/esm/adapter/resources/webgl-framebuffer.js +265 -0
  292. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -0
  293. package/dist/esm/adapter/resources/webgl-render-pass.js +19 -0
  294. package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -0
  295. package/dist/esm/adapter/resources/webgl-render-pipeline.js +400 -0
  296. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -0
  297. package/dist/esm/adapter/resources/webgl-sampler.js +50 -0
  298. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -0
  299. package/dist/{adapter → esm/adapter/resources}/webgl-shader.js +13 -20
  300. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
  301. package/dist/esm/{classes/texture.js → adapter/resources/webgl-texture.js} +274 -229
  302. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -0
  303. package/dist/esm/adapter/webgl-canvas-context.js +54 -0
  304. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -0
  305. package/dist/esm/adapter/webgl-device.js +184 -111
  306. package/dist/esm/adapter/webgl-device.js.map +1 -1
  307. package/dist/esm/{classes → classic}/accessor.js +33 -1
  308. package/dist/esm/classic/accessor.js.map +1 -0
  309. package/dist/{classes/webgl-buffer.js → esm/classic/buffer.js} +53 -51
  310. package/dist/esm/classic/buffer.js.map +1 -0
  311. package/dist/{webgl-utils → esm/classic}/typed-array-utils.js +0 -0
  312. package/dist/esm/classic/typed-array-utils.js.map +1 -0
  313. package/dist/esm/context/context/context-state.js +1 -1
  314. package/dist/esm/context/context/context-state.js.map +1 -1
  315. package/dist/esm/context/context/create-context.js +12 -0
  316. package/dist/esm/context/context/create-context.js.map +1 -1
  317. package/dist/esm/context/context/device-pixels.js.map +1 -1
  318. package/dist/esm/context/debug/spector.js +76 -0
  319. package/dist/esm/context/debug/spector.js.map +1 -0
  320. package/dist/esm/context/debug/webgl-developer-tools.js +121 -0
  321. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -0
  322. package/dist/esm/context/parameters/unified-parameter-api.js +4 -4
  323. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  324. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  325. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  326. package/dist/esm/context/polyfill/polyfill-context.js +4 -3
  327. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  328. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  329. package/dist/esm/context/state-tracker/track-context-state.js +25 -11
  330. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  331. package/dist/esm/index.js +19 -31
  332. package/dist/esm/index.js.map +1 -1
  333. package/dist/esm/init.js +2 -31
  334. package/dist/esm/init.js.map +1 -1
  335. package/dist/esm/types/webgl.js +2 -0
  336. package/dist/esm/types/webgl.js.map +1 -0
  337. package/dist/index.d.ts +22 -46
  338. package/dist/index.d.ts.map +1 -1
  339. package/dist/index.js +19 -31
  340. package/dist/index.js.map +1 -1
  341. package/dist/init.d.ts +1 -4
  342. package/dist/init.d.ts.map +1 -1
  343. package/dist/init.js +2 -31
  344. package/dist/init.js.map +1 -1
  345. package/dist/types/webgl.d.ts +144 -0
  346. package/dist/types/webgl.d.ts.map +1 -0
  347. package/dist/types/webgl.js +2 -0
  348. package/dist/types/webgl.js.map +1 -0
  349. package/package.json +5 -5
  350. package/src/adapter/converters/{set-device-parameters.ts → device-parameters.ts} +52 -9
  351. package/src/{classes → adapter/converters}/renderbuffer-formats.ts +1 -1
  352. package/src/adapter/converters/sampler-parameters.ts +175 -0
  353. package/src/adapter/converters/texture-formats.ts +633 -0
  354. package/src/adapter/converters/vertex-formats.ts +22 -0
  355. package/src/adapter/device-helpers/device-features.ts +46 -123
  356. package/src/adapter/device-helpers/device-limits.ts +5 -2
  357. package/src/adapter/device-helpers/get-device-info.ts +8 -8
  358. package/src/adapter/helpers/attribute-utils.ts +61 -0
  359. package/src/adapter/helpers/get-shader-layout.ts +388 -0
  360. package/src/{webgl-utils → adapter/helpers}/parse-shader-compiler-log.ts +0 -0
  361. package/src/adapter/helpers/set-uniform.ts +87 -0
  362. package/src/adapter/helpers/uniforms.ts +110 -0
  363. package/src/{webgl-utils → adapter/objects}/constants-to-keys.ts +6 -3
  364. package/src/adapter/objects/webgl-renderbuffer.ts +104 -0
  365. package/src/{classes → adapter/objects}/webgl-resource.ts +23 -17
  366. package/src/adapter/objects/webgl-vertex-array-object.ts +111 -0
  367. package/src/adapter/resources/webgl-buffer.ts +219 -0
  368. package/src/adapter/resources/webgl-command-buffer.ts +94 -0
  369. package/src/adapter/resources/webgl-command-encoder.ts +58 -0
  370. package/src/adapter/resources/webgl-external-texture.ts +92 -0
  371. package/src/adapter/resources/webgl-framebuffer.ts +279 -0
  372. package/src/adapter/resources/webgl-render-pass.ts +23 -0
  373. package/src/adapter/resources/webgl-render-pipeline.ts +413 -0
  374. package/src/adapter/resources/webgl-sampler.ts +54 -0
  375. package/src/adapter/{webgl-shader.ts → resources/webgl-shader.ts} +14 -20
  376. package/src/adapter/resources/webgl-texture.ts +1023 -0
  377. package/src/adapter/webgl-canvas-context.ts +74 -0
  378. package/src/adapter/webgl-device.ts +226 -275
  379. package/{dist/esm/classes/accessor.ts.disabled → src/classic/accessor.ts} +50 -36
  380. package/src/{classes/webgl-buffer.ts → classic/buffer.ts} +69 -77
  381. package/src/{webgl-utils → classic}/typed-array-utils.ts +3 -1
  382. package/src/context/context/context-state.ts +4 -2
  383. package/src/context/context/create-context.ts +28 -1
  384. package/src/context/context/device-pixels.ts +9 -4
  385. package/src/context/debug/spector.ts +92 -0
  386. package/src/context/debug/webgl-developer-tools.ts +162 -0
  387. package/src/context/parameters/unified-parameter-api.ts +6 -4
  388. package/src/context/parameters/webgl-parameter-tables.ts +38 -36
  389. package/src/context/polyfill/get-parameter-polyfill.ts +1 -1
  390. package/src/context/polyfill/polyfill-context.ts +4 -3
  391. package/src/context/state-tracker/deep-array-equal.ts +1 -1
  392. package/src/context/state-tracker/track-context-state.ts +27 -20
  393. package/src/index.ts +33 -102
  394. package/src/init.ts +2 -46
  395. package/src/types/webgl.ts +283 -0
  396. package/dist/_deprecated/context-api.d.ts +0 -85
  397. package/dist/_deprecated/context-api.d.ts.map +0 -1
  398. package/dist/_deprecated/context-api.js +0 -76
  399. package/dist/_deprecated/context-api.js.map +0 -1
  400. package/dist/_deprecated/features.d.ts +0 -27
  401. package/dist/_deprecated/features.d.ts.map +0 -1
  402. package/dist/_deprecated/features.js +0 -111
  403. package/dist/_deprecated/features.js.map +0 -1
  404. package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
  405. package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
  406. package/dist/adapter/converters/set-device-parameters.js.map +0 -1
  407. package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
  408. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
  409. package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
  410. package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
  411. package/dist/adapter/webgl-shader.d.ts.map +0 -1
  412. package/dist/adapter/webgl-shader.js.map +0 -1
  413. package/dist/classes/accessor.d.ts +0 -28
  414. package/dist/classes/accessor.d.ts.map +0 -1
  415. package/dist/classes/accessor.js.map +0 -1
  416. package/dist/classes/accessor.ts.disabled +0 -159
  417. package/dist/classes/clear.d.ts +0 -17
  418. package/dist/classes/clear.d.ts.map +0 -1
  419. package/dist/classes/clear.js +0 -105
  420. package/dist/classes/clear.js.map +0 -1
  421. package/dist/classes/copy-and-blit.d.ts +0 -86
  422. package/dist/classes/copy-and-blit.d.ts.map +0 -1
  423. package/dist/classes/copy-and-blit.js +0 -338
  424. package/dist/classes/copy-and-blit.js.map +0 -1
  425. package/dist/classes/framebuffer.d.ts +0 -139
  426. package/dist/classes/framebuffer.d.ts.map +0 -1
  427. package/dist/classes/framebuffer.js +0 -656
  428. package/dist/classes/framebuffer.js.map +0 -1
  429. package/dist/classes/program-configuration.d.ts +0 -24
  430. package/dist/classes/program-configuration.d.ts.map +0 -1
  431. package/dist/classes/program-configuration.js +0 -73
  432. package/dist/classes/program-configuration.js.map +0 -1
  433. package/dist/classes/program.d.ts +0 -66
  434. package/dist/classes/program.d.ts.map +0 -1
  435. package/dist/classes/program.js +0 -379
  436. package/dist/classes/program.js.map +0 -1
  437. package/dist/classes/query.d.ts +0 -27
  438. package/dist/classes/query.d.ts.map +0 -1
  439. package/dist/classes/query.js +0 -145
  440. package/dist/classes/query.js.map +0 -1
  441. package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
  442. package/dist/classes/renderbuffer-formats.js.map +0 -1
  443. package/dist/classes/renderbuffer.d.ts +0 -60
  444. package/dist/classes/renderbuffer.d.ts.map +0 -1
  445. package/dist/classes/renderbuffer.js.map +0 -1
  446. package/dist/classes/shader.d.ts +0 -42
  447. package/dist/classes/shader.d.ts.map +0 -1
  448. package/dist/classes/shader.js +0 -118
  449. package/dist/classes/shader.js.map +0 -1
  450. package/dist/classes/texture-2d.d.ts +0 -9
  451. package/dist/classes/texture-2d.d.ts.map +0 -1
  452. package/dist/classes/texture-2d.js +0 -36
  453. package/dist/classes/texture-2d.js.map +0 -1
  454. package/dist/classes/texture-3d.d.ts +0 -29
  455. package/dist/classes/texture-3d.d.ts.map +0 -1
  456. package/dist/classes/texture-3d.js +0 -76
  457. package/dist/classes/texture-3d.js.map +0 -1
  458. package/dist/classes/texture-cube.d.ts +0 -28
  459. package/dist/classes/texture-cube.d.ts.map +0 -1
  460. package/dist/classes/texture-cube.js +0 -130
  461. package/dist/classes/texture-cube.js.map +0 -1
  462. package/dist/classes/texture-formats.d.ts +0 -37
  463. package/dist/classes/texture-formats.d.ts.map +0 -1
  464. package/dist/classes/texture-formats.js +0 -98
  465. package/dist/classes/texture-formats.js.map +0 -1
  466. package/dist/classes/texture.d.ts +0 -123
  467. package/dist/classes/texture.d.ts.map +0 -1
  468. package/dist/classes/texture.js.map +0 -1
  469. package/dist/classes/transform-feedback.d.ts +0 -33
  470. package/dist/classes/transform-feedback.d.ts.map +0 -1
  471. package/dist/classes/transform-feedback.js +0 -198
  472. package/dist/classes/transform-feedback.js.map +0 -1
  473. package/dist/classes/uniform-buffer-layout.d.ts +0 -17
  474. package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
  475. package/dist/classes/uniform-buffer-layout.js +0 -104
  476. package/dist/classes/uniform-buffer-layout.js.map +0 -1
  477. package/dist/classes/uniforms.d.ts +0 -37
  478. package/dist/classes/uniforms.d.ts.map +0 -1
  479. package/dist/classes/uniforms.js +0 -250
  480. package/dist/classes/uniforms.js.map +0 -1
  481. package/dist/classes/vertex-array-object.d.ts +0 -76
  482. package/dist/classes/vertex-array-object.d.ts.map +0 -1
  483. package/dist/classes/vertex-array-object.js +0 -261
  484. package/dist/classes/vertex-array-object.js.map +0 -1
  485. package/dist/classes/vertex-array.d.ts +0 -75
  486. package/dist/classes/vertex-array.d.ts.map +0 -1
  487. package/dist/classes/vertex-array.js +0 -408
  488. package/dist/classes/vertex-array.js.map +0 -1
  489. package/dist/classes/webgl-buffer.d.ts.map +0 -1
  490. package/dist/classes/webgl-buffer.js.map +0 -1
  491. package/dist/classes/webgl-resource.d.ts.map +0 -1
  492. package/dist/classes/webgl-resource.js.map +0 -1
  493. package/dist/context/context/get-canvas.d.ts +0 -13
  494. package/dist/context/context/get-canvas.d.ts.map +0 -1
  495. package/dist/context/context/get-canvas.js +0 -31
  496. package/dist/context/context/get-canvas.js.map +0 -1
  497. package/dist/context/context/resize-context.d.ts +0 -20
  498. package/dist/context/context/resize-context.d.ts.map +0 -1
  499. package/dist/context/context/resize-context.js +0 -15
  500. package/dist/context/context/resize-context.js.map +0 -1
  501. package/dist/context/parameters/webgl-parameters.d.ts +0 -144
  502. package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
  503. package/dist/context/parameters/webgl-parameters.js +0 -2
  504. package/dist/context/parameters/webgl-parameters.js.map +0 -1
  505. package/dist/debug/debug-program-configuration.d.ts +0 -2
  506. package/dist/debug/debug-program-configuration.d.ts.map +0 -1
  507. package/dist/debug/debug-program-configuration.js +0 -40
  508. package/dist/debug/debug-program-configuration.js.map +0 -1
  509. package/dist/debug/debug-uniforms.d.ts +0 -12
  510. package/dist/debug/debug-uniforms.d.ts.map +0 -1
  511. package/dist/debug/debug-uniforms.js +0 -108
  512. package/dist/debug/debug-uniforms.js.map +0 -1
  513. package/dist/debug/debug-vertex-array.d.ts +0 -5
  514. package/dist/debug/debug-vertex-array.d.ts.map +0 -1
  515. package/dist/debug/debug-vertex-array.js +0 -118
  516. package/dist/debug/debug-vertex-array.js.map +0 -1
  517. package/dist/es5/_deprecated/context-api.js +0 -116
  518. package/dist/es5/_deprecated/context-api.js.map +0 -1
  519. package/dist/es5/_deprecated/features.js +0 -118
  520. package/dist/es5/_deprecated/features.js.map +0 -1
  521. package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
  522. package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
  523. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
  524. package/dist/es5/adapter/webgl-shader.js.map +0 -1
  525. package/dist/es5/classes/accessor.d.ts +0 -28
  526. package/dist/es5/classes/accessor.js.map +0 -1
  527. package/dist/es5/classes/accessor.ts.disabled +0 -159
  528. package/dist/es5/classes/clear.js +0 -135
  529. package/dist/es5/classes/clear.js.map +0 -1
  530. package/dist/es5/classes/copy-and-blit.js +0 -382
  531. package/dist/es5/classes/copy-and-blit.js.map +0 -1
  532. package/dist/es5/classes/framebuffer.js +0 -807
  533. package/dist/es5/classes/framebuffer.js.map +0 -1
  534. package/dist/es5/classes/program-configuration.js +0 -119
  535. package/dist/es5/classes/program-configuration.js.map +0 -1
  536. package/dist/es5/classes/program.js +0 -471
  537. package/dist/es5/classes/program.js.map +0 -1
  538. package/dist/es5/classes/query.js +0 -222
  539. package/dist/es5/classes/query.js.map +0 -1
  540. package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
  541. package/dist/es5/classes/renderbuffer.js.map +0 -1
  542. package/dist/es5/classes/shader.js +0 -195
  543. package/dist/es5/classes/shader.js.map +0 -1
  544. package/dist/es5/classes/texture-2d.js.map +0 -1
  545. package/dist/es5/classes/texture-3d.js +0 -142
  546. package/dist/es5/classes/texture-3d.js.map +0 -1
  547. package/dist/es5/classes/texture-cube.js +0 -202
  548. package/dist/es5/classes/texture-cube.js.map +0 -1
  549. package/dist/es5/classes/texture-formats.js +0 -87
  550. package/dist/es5/classes/texture-formats.js.map +0 -1
  551. package/dist/es5/classes/texture.js.map +0 -1
  552. package/dist/es5/classes/transform-feedback.js +0 -267
  553. package/dist/es5/classes/transform-feedback.js.map +0 -1
  554. package/dist/es5/classes/uniform-buffer-layout.js +0 -130
  555. package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
  556. package/dist/es5/classes/uniforms.js +0 -232
  557. package/dist/es5/classes/uniforms.js.map +0 -1
  558. package/dist/es5/classes/vertex-array-object.js +0 -337
  559. package/dist/es5/classes/vertex-array-object.js.map +0 -1
  560. package/dist/es5/classes/vertex-array.js +0 -465
  561. package/dist/es5/classes/vertex-array.js.map +0 -1
  562. package/dist/es5/classes/webgl-buffer.js.map +0 -1
  563. package/dist/es5/classes/webgl-resource.js.map +0 -1
  564. package/dist/es5/context/context/get-canvas.js +0 -40
  565. package/dist/es5/context/context/get-canvas.js.map +0 -1
  566. package/dist/es5/context/context/resize-context.js +0 -23
  567. package/dist/es5/context/context/resize-context.js.map +0 -1
  568. package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
  569. package/dist/es5/debug/debug-program-configuration.js +0 -76
  570. package/dist/es5/debug/debug-program-configuration.js.map +0 -1
  571. package/dist/es5/debug/debug-uniforms.js +0 -156
  572. package/dist/es5/debug/debug-uniforms.js.map +0 -1
  573. package/dist/es5/debug/debug-vertex-array.js +0 -126
  574. package/dist/es5/debug/debug-vertex-array.js.map +0 -1
  575. package/dist/es5/helpers/get-program-bindings.js.map +0 -1
  576. package/dist/es5/helpers/program-bindings.js +0 -2
  577. package/dist/es5/types/accessor.d.ts +0 -29
  578. package/dist/es5/webgl-utils/attribute-utils.js +0 -186
  579. package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
  580. package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
  581. package/dist/es5/webgl-utils/format-utils.js +0 -58
  582. package/dist/es5/webgl-utils/format-utils.js.map +0 -1
  583. package/dist/es5/webgl-utils/get-error.js +0 -49
  584. package/dist/es5/webgl-utils/get-error.js.map +0 -1
  585. package/dist/es5/webgl-utils/index.js +0 -74
  586. package/dist/es5/webgl-utils/index.js.map +0 -1
  587. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  588. package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
  589. package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
  590. package/dist/es5/webgl-utils/texture-utils.js +0 -61
  591. package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
  592. package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
  593. package/dist/esm/_deprecated/context-api.js +0 -76
  594. package/dist/esm/_deprecated/context-api.js.map +0 -1
  595. package/dist/esm/_deprecated/features.js +0 -111
  596. package/dist/esm/_deprecated/features.js.map +0 -1
  597. package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
  598. package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
  599. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
  600. package/dist/esm/adapter/webgl-shader.js.map +0 -1
  601. package/dist/esm/classes/accessor.d.ts +0 -28
  602. package/dist/esm/classes/accessor.js.map +0 -1
  603. package/dist/esm/classes/clear.js +0 -105
  604. package/dist/esm/classes/clear.js.map +0 -1
  605. package/dist/esm/classes/copy-and-blit.js +0 -338
  606. package/dist/esm/classes/copy-and-blit.js.map +0 -1
  607. package/dist/esm/classes/framebuffer.js +0 -656
  608. package/dist/esm/classes/framebuffer.js.map +0 -1
  609. package/dist/esm/classes/program-configuration.js +0 -73
  610. package/dist/esm/classes/program-configuration.js.map +0 -1
  611. package/dist/esm/classes/program.js +0 -379
  612. package/dist/esm/classes/program.js.map +0 -1
  613. package/dist/esm/classes/query.js +0 -145
  614. package/dist/esm/classes/query.js.map +0 -1
  615. package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
  616. package/dist/esm/classes/renderbuffer.js.map +0 -1
  617. package/dist/esm/classes/shader.js +0 -118
  618. package/dist/esm/classes/shader.js.map +0 -1
  619. package/dist/esm/classes/texture-2d.js +0 -36
  620. package/dist/esm/classes/texture-2d.js.map +0 -1
  621. package/dist/esm/classes/texture-3d.js +0 -76
  622. package/dist/esm/classes/texture-3d.js.map +0 -1
  623. package/dist/esm/classes/texture-cube.js +0 -130
  624. package/dist/esm/classes/texture-cube.js.map +0 -1
  625. package/dist/esm/classes/texture-formats.js +0 -98
  626. package/dist/esm/classes/texture-formats.js.map +0 -1
  627. package/dist/esm/classes/texture.js.map +0 -1
  628. package/dist/esm/classes/transform-feedback.js +0 -198
  629. package/dist/esm/classes/transform-feedback.js.map +0 -1
  630. package/dist/esm/classes/uniform-buffer-layout.js +0 -104
  631. package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
  632. package/dist/esm/classes/uniforms.js +0 -250
  633. package/dist/esm/classes/uniforms.js.map +0 -1
  634. package/dist/esm/classes/vertex-array-object.js +0 -261
  635. package/dist/esm/classes/vertex-array-object.js.map +0 -1
  636. package/dist/esm/classes/vertex-array.js +0 -408
  637. package/dist/esm/classes/vertex-array.js.map +0 -1
  638. package/dist/esm/classes/webgl-buffer.js.map +0 -1
  639. package/dist/esm/classes/webgl-resource.js.map +0 -1
  640. package/dist/esm/context/context/get-canvas.js +0 -31
  641. package/dist/esm/context/context/get-canvas.js.map +0 -1
  642. package/dist/esm/context/context/resize-context.js +0 -15
  643. package/dist/esm/context/context/resize-context.js.map +0 -1
  644. package/dist/esm/context/parameters/webgl-parameters.js +0 -2
  645. package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
  646. package/dist/esm/debug/debug-program-configuration.js +0 -40
  647. package/dist/esm/debug/debug-program-configuration.js.map +0 -1
  648. package/dist/esm/debug/debug-uniforms.js +0 -108
  649. package/dist/esm/debug/debug-uniforms.js.map +0 -1
  650. package/dist/esm/debug/debug-vertex-array.js +0 -118
  651. package/dist/esm/debug/debug-vertex-array.js.map +0 -1
  652. package/dist/esm/helpers/get-program-bindings.js +0 -228
  653. package/dist/esm/helpers/get-program-bindings.js.map +0 -1
  654. package/dist/esm/helpers/program-bindings.js +0 -2
  655. package/dist/esm/types/accessor.d.ts +0 -29
  656. package/dist/esm/webgl-utils/attribute-utils.js +0 -182
  657. package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
  658. package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
  659. package/dist/esm/webgl-utils/format-utils.js +0 -45
  660. package/dist/esm/webgl-utils/format-utils.js.map +0 -1
  661. package/dist/esm/webgl-utils/get-error.js +0 -41
  662. package/dist/esm/webgl-utils/get-error.js.map +0 -1
  663. package/dist/esm/webgl-utils/index.js +0 -5
  664. package/dist/esm/webgl-utils/index.js.map +0 -1
  665. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  666. package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
  667. package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
  668. package/dist/esm/webgl-utils/texture-utils.js +0 -48
  669. package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
  670. package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
  671. package/dist/helpers/get-program-bindings.d.ts +0 -8
  672. package/dist/helpers/get-program-bindings.d.ts.map +0 -1
  673. package/dist/helpers/get-program-bindings.js +0 -228
  674. package/dist/helpers/get-program-bindings.js.map +0 -1
  675. package/dist/helpers/program-bindings.d.ts +0 -41
  676. package/dist/helpers/program-bindings.d.ts.map +0 -1
  677. package/dist/helpers/program-bindings.js +0 -2
  678. package/dist/types/accessor.d.ts +0 -29
  679. package/dist/webgl-utils/attribute-utils.d.ts +0 -18
  680. package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
  681. package/dist/webgl-utils/attribute-utils.js +0 -182
  682. package/dist/webgl-utils/attribute-utils.js.map +0 -1
  683. package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
  684. package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
  685. package/dist/webgl-utils/constants-to-keys.js.map +0 -1
  686. package/dist/webgl-utils/format-utils.d.ts +0 -3
  687. package/dist/webgl-utils/format-utils.d.ts.map +0 -1
  688. package/dist/webgl-utils/format-utils.js +0 -45
  689. package/dist/webgl-utils/format-utils.js.map +0 -1
  690. package/dist/webgl-utils/get-error.d.ts +0 -3
  691. package/dist/webgl-utils/get-error.d.ts.map +0 -1
  692. package/dist/webgl-utils/get-error.js +0 -41
  693. package/dist/webgl-utils/get-error.js.map +0 -1
  694. package/dist/webgl-utils/index.d.ts +0 -5
  695. package/dist/webgl-utils/index.d.ts.map +0 -1
  696. package/dist/webgl-utils/index.js +0 -5
  697. package/dist/webgl-utils/index.js.map +0 -1
  698. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
  699. package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  700. package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
  701. package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
  702. package/dist/webgl-utils/request-animation-frame.js +0 -7
  703. package/dist/webgl-utils/request-animation-frame.js.map +0 -1
  704. package/dist/webgl-utils/texture-utils.d.ts +0 -15
  705. package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
  706. package/dist/webgl-utils/texture-utils.js +0 -48
  707. package/dist/webgl-utils/texture-utils.js.map +0 -1
  708. package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
  709. package/dist/webgl-utils/typed-array-utils.js.map +0 -1
  710. package/src/.DS_Store +0 -0
  711. package/src/_deprecated/context-api.ts +0 -146
  712. package/src/_deprecated/features.ts +0 -159
  713. package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
  714. package/src/classes/accessor.d.ts +0 -28
  715. package/src/classes/accessor.js +0 -129
  716. package/src/classes/accessor.ts.disabled +0 -159
  717. package/src/classes/clear.ts +0 -108
  718. package/src/classes/copy-and-blit.ts +0 -460
  719. package/src/classes/framebuffer.ts +0 -763
  720. package/src/classes/program-configuration.ts +0 -77
  721. package/src/classes/program.ts +0 -431
  722. package/src/classes/query.ts +0 -171
  723. package/src/classes/renderbuffer.ts +0 -154
  724. package/src/classes/shader.ts +0 -129
  725. package/src/classes/texture-2d.ts +0 -35
  726. package/src/classes/texture-3d.ts +0 -123
  727. package/src/classes/texture-cube.ts +0 -162
  728. package/src/classes/texture-formats.ts +0 -171
  729. package/src/classes/texture.ts +0 -965
  730. package/src/classes/transform-feedback.ts +0 -191
  731. package/src/classes/uniform-buffer-layout.ts +0 -113
  732. package/src/classes/uniforms.ts +0 -394
  733. package/src/classes/vertex-array-object.ts +0 -339
  734. package/src/classes/vertex-array.ts +0 -484
  735. package/src/context/context/get-canvas.ts +0 -37
  736. package/src/context/context/resize-context.ts +0 -37
  737. package/src/context/parameters/webgl-parameters.ts +0 -197
  738. package/src/debug/debug-program-configuration.ts +0 -32
  739. package/src/debug/debug-uniforms.ts +0 -100
  740. package/src/debug/debug-vertex-array.ts +0 -123
  741. package/src/helpers/get-program-bindings.ts +0 -244
  742. package/src/helpers/program-bindings.ts +0 -46
  743. package/src/types/accessor.d.ts +0 -29
  744. package/src/webgl-utils/attribute-utils.ts +0 -171
  745. package/src/webgl-utils/format-utils.ts +0 -43
  746. package/src/webgl-utils/get-error.ts +0 -56
  747. package/src/webgl-utils/index.ts +0 -12
  748. package/src/webgl-utils/request-animation-frame.ts +0 -14
  749. 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
- }