@luma.gl/webgl 8.6.0-alpha.3 → 9.0.0-alpha.2

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 (731) 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/{esm/adapter/converters/set-device-parameters.js → adapter/converters/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/{esm/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/{esm/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/adapter/{webgl-shader.js → 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/{esm/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 -77
  113. package/dist/adapter/webgl-device.d.ts.map +1 -1
  114. package/dist/adapter/webgl-device.js +185 -113
  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 +255 -135
  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 +66 -238
  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/{adapter/converters/set-device-parameters.js → esm/adapter/converters/device-parameters.js} +36 -5
  250. package/dist/esm/adapter/converters/device-parameters.js.map +1 -0
  251. package/dist/{classes → esm/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/{classes → esm/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/esm/adapter/{webgl-shader.js → resources/webgl-shader.js} +13 -20
  300. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -0
  301. package/dist/{classes/texture.js → esm/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 +185 -113
  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 -29
  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 -43
  338. package/dist/index.d.ts.map +1 -1
  339. package/dist/index.js +19 -29
  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 +229 -285
  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 -91
  394. package/src/init.ts +2 -46
  395. package/src/types/webgl.ts +283 -0
  396. package/dist/adapter/converters/set-device-parameters.d.ts +0 -5
  397. package/dist/adapter/converters/set-device-parameters.d.ts.map +0 -1
  398. package/dist/adapter/converters/set-device-parameters.js.map +0 -1
  399. package/dist/adapter/converters/webgpu-texture-formats.d.ts +0 -281
  400. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +0 -1
  401. package/dist/adapter/converters/webgpu-texture-formats.js +0 -285
  402. package/dist/adapter/converters/webgpu-texture-formats.js.map +0 -1
  403. package/dist/adapter/webgl-shader.d.ts.map +0 -1
  404. package/dist/adapter/webgl-shader.js.map +0 -1
  405. package/dist/classes/accessor.d.ts +0 -28
  406. package/dist/classes/accessor.d.ts.map +0 -1
  407. package/dist/classes/accessor.js.map +0 -1
  408. package/dist/classes/accessor.ts.disabled +0 -159
  409. package/dist/classes/clear.d.ts +0 -17
  410. package/dist/classes/clear.d.ts.map +0 -1
  411. package/dist/classes/clear.js +0 -105
  412. package/dist/classes/clear.js.map +0 -1
  413. package/dist/classes/copy-and-blit.d.ts +0 -86
  414. package/dist/classes/copy-and-blit.d.ts.map +0 -1
  415. package/dist/classes/copy-and-blit.js +0 -338
  416. package/dist/classes/copy-and-blit.js.map +0 -1
  417. package/dist/classes/framebuffer.d.ts +0 -139
  418. package/dist/classes/framebuffer.d.ts.map +0 -1
  419. package/dist/classes/framebuffer.js +0 -656
  420. package/dist/classes/framebuffer.js.map +0 -1
  421. package/dist/classes/program-configuration.d.ts +0 -24
  422. package/dist/classes/program-configuration.d.ts.map +0 -1
  423. package/dist/classes/program-configuration.js +0 -73
  424. package/dist/classes/program-configuration.js.map +0 -1
  425. package/dist/classes/program.d.ts +0 -66
  426. package/dist/classes/program.d.ts.map +0 -1
  427. package/dist/classes/program.js +0 -379
  428. package/dist/classes/program.js.map +0 -1
  429. package/dist/classes/query.d.ts +0 -27
  430. package/dist/classes/query.d.ts.map +0 -1
  431. package/dist/classes/query.js +0 -145
  432. package/dist/classes/query.js.map +0 -1
  433. package/dist/classes/renderbuffer-formats.d.ts.map +0 -1
  434. package/dist/classes/renderbuffer-formats.js.map +0 -1
  435. package/dist/classes/renderbuffer.d.ts +0 -60
  436. package/dist/classes/renderbuffer.d.ts.map +0 -1
  437. package/dist/classes/renderbuffer.js.map +0 -1
  438. package/dist/classes/shader.d.ts +0 -42
  439. package/dist/classes/shader.d.ts.map +0 -1
  440. package/dist/classes/shader.js +0 -118
  441. package/dist/classes/shader.js.map +0 -1
  442. package/dist/classes/texture-2d.d.ts +0 -9
  443. package/dist/classes/texture-2d.d.ts.map +0 -1
  444. package/dist/classes/texture-2d.js +0 -36
  445. package/dist/classes/texture-2d.js.map +0 -1
  446. package/dist/classes/texture-3d.d.ts +0 -29
  447. package/dist/classes/texture-3d.d.ts.map +0 -1
  448. package/dist/classes/texture-3d.js +0 -76
  449. package/dist/classes/texture-3d.js.map +0 -1
  450. package/dist/classes/texture-cube.d.ts +0 -28
  451. package/dist/classes/texture-cube.d.ts.map +0 -1
  452. package/dist/classes/texture-cube.js +0 -130
  453. package/dist/classes/texture-cube.js.map +0 -1
  454. package/dist/classes/texture-formats.d.ts +0 -37
  455. package/dist/classes/texture-formats.d.ts.map +0 -1
  456. package/dist/classes/texture-formats.js +0 -98
  457. package/dist/classes/texture-formats.js.map +0 -1
  458. package/dist/classes/texture.d.ts +0 -123
  459. package/dist/classes/texture.d.ts.map +0 -1
  460. package/dist/classes/texture.js.map +0 -1
  461. package/dist/classes/transform-feedback.d.ts +0 -33
  462. package/dist/classes/transform-feedback.d.ts.map +0 -1
  463. package/dist/classes/transform-feedback.js +0 -198
  464. package/dist/classes/transform-feedback.js.map +0 -1
  465. package/dist/classes/uniform-buffer-layout.d.ts +0 -17
  466. package/dist/classes/uniform-buffer-layout.d.ts.map +0 -1
  467. package/dist/classes/uniform-buffer-layout.js +0 -104
  468. package/dist/classes/uniform-buffer-layout.js.map +0 -1
  469. package/dist/classes/uniforms.d.ts +0 -37
  470. package/dist/classes/uniforms.d.ts.map +0 -1
  471. package/dist/classes/uniforms.js +0 -250
  472. package/dist/classes/uniforms.js.map +0 -1
  473. package/dist/classes/vertex-array-object.d.ts +0 -76
  474. package/dist/classes/vertex-array-object.d.ts.map +0 -1
  475. package/dist/classes/vertex-array-object.js +0 -261
  476. package/dist/classes/vertex-array-object.js.map +0 -1
  477. package/dist/classes/vertex-array.d.ts +0 -75
  478. package/dist/classes/vertex-array.d.ts.map +0 -1
  479. package/dist/classes/vertex-array.js +0 -408
  480. package/dist/classes/vertex-array.js.map +0 -1
  481. package/dist/classes/webgl-buffer.d.ts.map +0 -1
  482. package/dist/classes/webgl-buffer.js.map +0 -1
  483. package/dist/classes/webgl-resource.d.ts.map +0 -1
  484. package/dist/classes/webgl-resource.js.map +0 -1
  485. package/dist/context/context/get-canvas.d.ts +0 -13
  486. package/dist/context/context/get-canvas.d.ts.map +0 -1
  487. package/dist/context/context/get-canvas.js +0 -31
  488. package/dist/context/context/get-canvas.js.map +0 -1
  489. package/dist/context/context/resize-context.d.ts +0 -20
  490. package/dist/context/context/resize-context.d.ts.map +0 -1
  491. package/dist/context/context/resize-context.js +0 -15
  492. package/dist/context/context/resize-context.js.map +0 -1
  493. package/dist/context/parameters/webgl-parameters.d.ts +0 -144
  494. package/dist/context/parameters/webgl-parameters.d.ts.map +0 -1
  495. package/dist/context/parameters/webgl-parameters.js +0 -2
  496. package/dist/context/parameters/webgl-parameters.js.map +0 -1
  497. package/dist/debug/debug-program-configuration.d.ts +0 -2
  498. package/dist/debug/debug-program-configuration.d.ts.map +0 -1
  499. package/dist/debug/debug-program-configuration.js +0 -40
  500. package/dist/debug/debug-program-configuration.js.map +0 -1
  501. package/dist/debug/debug-uniforms.d.ts +0 -12
  502. package/dist/debug/debug-uniforms.d.ts.map +0 -1
  503. package/dist/debug/debug-uniforms.js +0 -108
  504. package/dist/debug/debug-uniforms.js.map +0 -1
  505. package/dist/debug/debug-vertex-array.d.ts +0 -5
  506. package/dist/debug/debug-vertex-array.d.ts.map +0 -1
  507. package/dist/debug/debug-vertex-array.js +0 -118
  508. package/dist/debug/debug-vertex-array.js.map +0 -1
  509. package/dist/es5/adapter/converters/set-device-parameters.js.map +0 -1
  510. package/dist/es5/adapter/converters/webgpu-texture-formats.js +0 -296
  511. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +0 -1
  512. package/dist/es5/adapter/webgl-shader.js.map +0 -1
  513. package/dist/es5/classes/accessor.d.ts +0 -28
  514. package/dist/es5/classes/accessor.js.map +0 -1
  515. package/dist/es5/classes/accessor.ts.disabled +0 -159
  516. package/dist/es5/classes/clear.js +0 -135
  517. package/dist/es5/classes/clear.js.map +0 -1
  518. package/dist/es5/classes/copy-and-blit.js +0 -382
  519. package/dist/es5/classes/copy-and-blit.js.map +0 -1
  520. package/dist/es5/classes/framebuffer.js +0 -807
  521. package/dist/es5/classes/framebuffer.js.map +0 -1
  522. package/dist/es5/classes/program-configuration.js +0 -119
  523. package/dist/es5/classes/program-configuration.js.map +0 -1
  524. package/dist/es5/classes/program.js +0 -471
  525. package/dist/es5/classes/program.js.map +0 -1
  526. package/dist/es5/classes/query.js +0 -222
  527. package/dist/es5/classes/query.js.map +0 -1
  528. package/dist/es5/classes/renderbuffer-formats.js.map +0 -1
  529. package/dist/es5/classes/renderbuffer.js.map +0 -1
  530. package/dist/es5/classes/shader.js +0 -195
  531. package/dist/es5/classes/shader.js.map +0 -1
  532. package/dist/es5/classes/texture-2d.js.map +0 -1
  533. package/dist/es5/classes/texture-3d.js +0 -142
  534. package/dist/es5/classes/texture-3d.js.map +0 -1
  535. package/dist/es5/classes/texture-cube.js +0 -202
  536. package/dist/es5/classes/texture-cube.js.map +0 -1
  537. package/dist/es5/classes/texture-formats.js +0 -87
  538. package/dist/es5/classes/texture-formats.js.map +0 -1
  539. package/dist/es5/classes/texture.js.map +0 -1
  540. package/dist/es5/classes/transform-feedback.js +0 -267
  541. package/dist/es5/classes/transform-feedback.js.map +0 -1
  542. package/dist/es5/classes/uniform-buffer-layout.js +0 -130
  543. package/dist/es5/classes/uniform-buffer-layout.js.map +0 -1
  544. package/dist/es5/classes/uniforms.js +0 -232
  545. package/dist/es5/classes/uniforms.js.map +0 -1
  546. package/dist/es5/classes/vertex-array-object.js +0 -337
  547. package/dist/es5/classes/vertex-array-object.js.map +0 -1
  548. package/dist/es5/classes/vertex-array.js +0 -465
  549. package/dist/es5/classes/vertex-array.js.map +0 -1
  550. package/dist/es5/classes/webgl-buffer.js.map +0 -1
  551. package/dist/es5/classes/webgl-resource.js.map +0 -1
  552. package/dist/es5/context/context/get-canvas.js +0 -40
  553. package/dist/es5/context/context/get-canvas.js.map +0 -1
  554. package/dist/es5/context/context/resize-context.js +0 -23
  555. package/dist/es5/context/context/resize-context.js.map +0 -1
  556. package/dist/es5/context/parameters/webgl-parameters.js.map +0 -1
  557. package/dist/es5/debug/debug-program-configuration.js +0 -76
  558. package/dist/es5/debug/debug-program-configuration.js.map +0 -1
  559. package/dist/es5/debug/debug-uniforms.js +0 -156
  560. package/dist/es5/debug/debug-uniforms.js.map +0 -1
  561. package/dist/es5/debug/debug-vertex-array.js +0 -126
  562. package/dist/es5/debug/debug-vertex-array.js.map +0 -1
  563. package/dist/es5/helpers/get-program-bindings.js.map +0 -1
  564. package/dist/es5/helpers/program-bindings.js +0 -2
  565. package/dist/es5/types/accessor.d.ts +0 -29
  566. package/dist/es5/webgl-utils/attribute-utils.js +0 -186
  567. package/dist/es5/webgl-utils/attribute-utils.js.map +0 -1
  568. package/dist/es5/webgl-utils/constants-to-keys.js.map +0 -1
  569. package/dist/es5/webgl-utils/format-utils.js +0 -58
  570. package/dist/es5/webgl-utils/format-utils.js.map +0 -1
  571. package/dist/es5/webgl-utils/get-error.js +0 -49
  572. package/dist/es5/webgl-utils/get-error.js.map +0 -1
  573. package/dist/es5/webgl-utils/index.js +0 -74
  574. package/dist/es5/webgl-utils/index.js.map +0 -1
  575. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  576. package/dist/es5/webgl-utils/request-animation-frame.js +0 -16
  577. package/dist/es5/webgl-utils/request-animation-frame.js.map +0 -1
  578. package/dist/es5/webgl-utils/texture-utils.js +0 -61
  579. package/dist/es5/webgl-utils/texture-utils.js.map +0 -1
  580. package/dist/es5/webgl-utils/typed-array-utils.js.map +0 -1
  581. package/dist/esm/adapter/converters/set-device-parameters.js.map +0 -1
  582. package/dist/esm/adapter/converters/webgpu-texture-formats.js +0 -285
  583. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +0 -1
  584. package/dist/esm/adapter/webgl-shader.js.map +0 -1
  585. package/dist/esm/classes/accessor.d.ts +0 -28
  586. package/dist/esm/classes/accessor.js.map +0 -1
  587. package/dist/esm/classes/clear.js +0 -105
  588. package/dist/esm/classes/clear.js.map +0 -1
  589. package/dist/esm/classes/copy-and-blit.js +0 -338
  590. package/dist/esm/classes/copy-and-blit.js.map +0 -1
  591. package/dist/esm/classes/framebuffer.js +0 -656
  592. package/dist/esm/classes/framebuffer.js.map +0 -1
  593. package/dist/esm/classes/program-configuration.js +0 -73
  594. package/dist/esm/classes/program-configuration.js.map +0 -1
  595. package/dist/esm/classes/program.js +0 -379
  596. package/dist/esm/classes/program.js.map +0 -1
  597. package/dist/esm/classes/query.js +0 -145
  598. package/dist/esm/classes/query.js.map +0 -1
  599. package/dist/esm/classes/renderbuffer-formats.js.map +0 -1
  600. package/dist/esm/classes/renderbuffer.js.map +0 -1
  601. package/dist/esm/classes/shader.js +0 -118
  602. package/dist/esm/classes/shader.js.map +0 -1
  603. package/dist/esm/classes/texture-2d.js +0 -36
  604. package/dist/esm/classes/texture-2d.js.map +0 -1
  605. package/dist/esm/classes/texture-3d.js +0 -76
  606. package/dist/esm/classes/texture-3d.js.map +0 -1
  607. package/dist/esm/classes/texture-cube.js +0 -130
  608. package/dist/esm/classes/texture-cube.js.map +0 -1
  609. package/dist/esm/classes/texture-formats.js +0 -98
  610. package/dist/esm/classes/texture-formats.js.map +0 -1
  611. package/dist/esm/classes/texture.js.map +0 -1
  612. package/dist/esm/classes/transform-feedback.js +0 -198
  613. package/dist/esm/classes/transform-feedback.js.map +0 -1
  614. package/dist/esm/classes/uniform-buffer-layout.js +0 -104
  615. package/dist/esm/classes/uniform-buffer-layout.js.map +0 -1
  616. package/dist/esm/classes/uniforms.js +0 -250
  617. package/dist/esm/classes/uniforms.js.map +0 -1
  618. package/dist/esm/classes/vertex-array-object.js +0 -261
  619. package/dist/esm/classes/vertex-array-object.js.map +0 -1
  620. package/dist/esm/classes/vertex-array.js +0 -408
  621. package/dist/esm/classes/vertex-array.js.map +0 -1
  622. package/dist/esm/classes/webgl-buffer.js.map +0 -1
  623. package/dist/esm/classes/webgl-resource.js.map +0 -1
  624. package/dist/esm/context/context/get-canvas.js +0 -31
  625. package/dist/esm/context/context/get-canvas.js.map +0 -1
  626. package/dist/esm/context/context/resize-context.js +0 -15
  627. package/dist/esm/context/context/resize-context.js.map +0 -1
  628. package/dist/esm/context/parameters/webgl-parameters.js +0 -2
  629. package/dist/esm/context/parameters/webgl-parameters.js.map +0 -1
  630. package/dist/esm/debug/debug-program-configuration.js +0 -40
  631. package/dist/esm/debug/debug-program-configuration.js.map +0 -1
  632. package/dist/esm/debug/debug-uniforms.js +0 -108
  633. package/dist/esm/debug/debug-uniforms.js.map +0 -1
  634. package/dist/esm/debug/debug-vertex-array.js +0 -118
  635. package/dist/esm/debug/debug-vertex-array.js.map +0 -1
  636. package/dist/esm/helpers/get-program-bindings.js +0 -228
  637. package/dist/esm/helpers/get-program-bindings.js.map +0 -1
  638. package/dist/esm/helpers/program-bindings.js +0 -2
  639. package/dist/esm/types/accessor.d.ts +0 -29
  640. package/dist/esm/webgl-utils/attribute-utils.js +0 -182
  641. package/dist/esm/webgl-utils/attribute-utils.js.map +0 -1
  642. package/dist/esm/webgl-utils/constants-to-keys.js.map +0 -1
  643. package/dist/esm/webgl-utils/format-utils.js +0 -45
  644. package/dist/esm/webgl-utils/format-utils.js.map +0 -1
  645. package/dist/esm/webgl-utils/get-error.js +0 -41
  646. package/dist/esm/webgl-utils/get-error.js.map +0 -1
  647. package/dist/esm/webgl-utils/index.js +0 -5
  648. package/dist/esm/webgl-utils/index.js.map +0 -1
  649. package/dist/esm/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  650. package/dist/esm/webgl-utils/request-animation-frame.js +0 -7
  651. package/dist/esm/webgl-utils/request-animation-frame.js.map +0 -1
  652. package/dist/esm/webgl-utils/texture-utils.js +0 -48
  653. package/dist/esm/webgl-utils/texture-utils.js.map +0 -1
  654. package/dist/esm/webgl-utils/typed-array-utils.js.map +0 -1
  655. package/dist/helpers/get-program-bindings.d.ts +0 -8
  656. package/dist/helpers/get-program-bindings.d.ts.map +0 -1
  657. package/dist/helpers/get-program-bindings.js +0 -228
  658. package/dist/helpers/get-program-bindings.js.map +0 -1
  659. package/dist/helpers/program-bindings.d.ts +0 -41
  660. package/dist/helpers/program-bindings.d.ts.map +0 -1
  661. package/dist/helpers/program-bindings.js +0 -2
  662. package/dist/types/accessor.d.ts +0 -29
  663. package/dist/webgl-utils/attribute-utils.d.ts +0 -18
  664. package/dist/webgl-utils/attribute-utils.d.ts.map +0 -1
  665. package/dist/webgl-utils/attribute-utils.js +0 -182
  666. package/dist/webgl-utils/attribute-utils.js.map +0 -1
  667. package/dist/webgl-utils/constants-to-keys.d.ts +0 -4
  668. package/dist/webgl-utils/constants-to-keys.d.ts.map +0 -1
  669. package/dist/webgl-utils/constants-to-keys.js.map +0 -1
  670. package/dist/webgl-utils/format-utils.d.ts +0 -3
  671. package/dist/webgl-utils/format-utils.d.ts.map +0 -1
  672. package/dist/webgl-utils/format-utils.js +0 -45
  673. package/dist/webgl-utils/format-utils.js.map +0 -1
  674. package/dist/webgl-utils/get-error.d.ts +0 -3
  675. package/dist/webgl-utils/get-error.d.ts.map +0 -1
  676. package/dist/webgl-utils/get-error.js +0 -41
  677. package/dist/webgl-utils/get-error.js.map +0 -1
  678. package/dist/webgl-utils/index.d.ts +0 -5
  679. package/dist/webgl-utils/index.d.ts.map +0 -1
  680. package/dist/webgl-utils/index.js +0 -5
  681. package/dist/webgl-utils/index.js.map +0 -1
  682. package/dist/webgl-utils/parse-shader-compiler-log.d.ts.map +0 -1
  683. package/dist/webgl-utils/parse-shader-compiler-log.js.map +0 -1
  684. package/dist/webgl-utils/request-animation-frame.d.ts +0 -4
  685. package/dist/webgl-utils/request-animation-frame.d.ts.map +0 -1
  686. package/dist/webgl-utils/request-animation-frame.js +0 -7
  687. package/dist/webgl-utils/request-animation-frame.js.map +0 -1
  688. package/dist/webgl-utils/texture-utils.d.ts +0 -15
  689. package/dist/webgl-utils/texture-utils.d.ts.map +0 -1
  690. package/dist/webgl-utils/texture-utils.js +0 -48
  691. package/dist/webgl-utils/texture-utils.js.map +0 -1
  692. package/dist/webgl-utils/typed-array-utils.d.ts.map +0 -1
  693. package/dist/webgl-utils/typed-array-utils.js.map +0 -1
  694. package/src/.DS_Store +0 -0
  695. package/src/adapter/converters/webgpu-texture-formats.ts +0 -167
  696. package/src/classes/accessor.d.ts +0 -28
  697. package/src/classes/accessor.js +0 -129
  698. package/src/classes/accessor.ts.disabled +0 -159
  699. package/src/classes/clear.ts +0 -108
  700. package/src/classes/copy-and-blit.ts +0 -460
  701. package/src/classes/framebuffer.ts +0 -763
  702. package/src/classes/program-configuration.ts +0 -77
  703. package/src/classes/program.ts +0 -431
  704. package/src/classes/query.ts +0 -171
  705. package/src/classes/renderbuffer.ts +0 -154
  706. package/src/classes/shader.ts +0 -129
  707. package/src/classes/texture-2d.ts +0 -35
  708. package/src/classes/texture-3d.ts +0 -123
  709. package/src/classes/texture-cube.ts +0 -162
  710. package/src/classes/texture-formats.ts +0 -171
  711. package/src/classes/texture.ts +0 -965
  712. package/src/classes/transform-feedback.ts +0 -191
  713. package/src/classes/uniform-buffer-layout.ts +0 -113
  714. package/src/classes/uniforms.ts +0 -394
  715. package/src/classes/vertex-array-object.ts +0 -339
  716. package/src/classes/vertex-array.ts +0 -484
  717. package/src/context/context/get-canvas.ts +0 -37
  718. package/src/context/context/resize-context.ts +0 -37
  719. package/src/context/parameters/webgl-parameters.ts +0 -197
  720. package/src/debug/debug-program-configuration.ts +0 -32
  721. package/src/debug/debug-uniforms.ts +0 -100
  722. package/src/debug/debug-vertex-array.ts +0 -123
  723. package/src/helpers/get-program-bindings.ts +0 -244
  724. package/src/helpers/program-bindings.ts +0 -46
  725. package/src/types/accessor.d.ts +0 -29
  726. package/src/webgl-utils/attribute-utils.ts +0 -171
  727. package/src/webgl-utils/format-utils.ts +0 -43
  728. package/src/webgl-utils/get-error.ts +0 -56
  729. package/src/webgl-utils/index.ts +0 -12
  730. package/src/webgl-utils/request-animation-frame.ts +0 -14
  731. 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
- }