@luma.gl/webgl 8.6.0-alpha.1 → 8.6.0-alpha.5

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 (701) hide show
  1. package/LICENSE +8 -1
  2. package/dist/_deprecated/context-api.d.ts +85 -0
  3. package/dist/_deprecated/context-api.d.ts.map +1 -0
  4. package/dist/_deprecated/context-api.js +76 -0
  5. package/dist/_deprecated/context-api.js.map +1 -0
  6. package/dist/{features/webgl-features-table.d.ts → _deprecated/features.d.ts} +4 -7
  7. package/dist/_deprecated/features.d.ts.map +1 -0
  8. package/dist/_deprecated/features.js +111 -0
  9. package/dist/_deprecated/features.js.map +1 -0
  10. package/dist/adapter/converters/set-device-parameters.d.ts +5 -0
  11. package/dist/adapter/converters/set-device-parameters.d.ts.map +1 -0
  12. package/dist/adapter/converters/set-device-parameters.js +124 -0
  13. package/dist/adapter/converters/set-device-parameters.js.map +1 -0
  14. package/dist/adapter/converters/webgpu-texture-formats.d.ts +281 -0
  15. package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +1 -0
  16. package/dist/adapter/converters/webgpu-texture-formats.js +285 -0
  17. package/dist/adapter/converters/webgpu-texture-formats.js.map +1 -0
  18. package/dist/adapter/device-helpers/device-features.d.ts +12 -0
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -0
  20. package/dist/adapter/device-helpers/device-features.js +123 -0
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -0
  22. package/dist/adapter/device-helpers/device-limits.d.ts +51 -0
  23. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -0
  24. package/dist/adapter/device-helpers/device-limits.js +90 -0
  25. package/dist/adapter/device-helpers/device-limits.js.map +1 -0
  26. package/dist/adapter/device-helpers/get-device-info.d.ts +4 -0
  27. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -0
  28. package/dist/adapter/device-helpers/get-device-info.js +44 -0
  29. package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
  30. package/dist/adapter/device-helpers/is-old-ie.d.ts +2 -0
  31. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -0
  32. package/dist/{esm/features/check-old-ie.js → adapter/device-helpers/is-old-ie.js} +3 -3
  33. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
  34. package/dist/adapter/webgl-device.d.ts +110 -0
  35. package/dist/adapter/webgl-device.d.ts.map +1 -0
  36. package/dist/adapter/webgl-device.js +207 -0
  37. package/dist/adapter/webgl-device.js.map +1 -0
  38. package/dist/adapter/webgl-shader.d.ts +18 -0
  39. package/dist/adapter/webgl-shader.d.ts.map +1 -0
  40. package/dist/adapter/webgl-shader.js +82 -0
  41. package/dist/adapter/webgl-shader.js.map +1 -0
  42. package/dist/classes/accessor.js +2 -2
  43. package/dist/classes/accessor.js.map +1 -1
  44. package/dist/classes/accessor.ts.disabled +1 -1
  45. package/dist/classes/clear.d.ts +3 -2
  46. package/dist/classes/clear.d.ts.map +1 -1
  47. package/dist/classes/clear.js +7 -4
  48. package/dist/classes/clear.js.map +1 -1
  49. package/dist/classes/copy-and-blit.d.ts +18 -1
  50. package/dist/classes/copy-and-blit.d.ts.map +1 -1
  51. package/dist/classes/copy-and-blit.js +30 -25
  52. package/dist/classes/copy-and-blit.js.map +1 -1
  53. package/dist/classes/framebuffer.d.ts +10 -1
  54. package/dist/classes/framebuffer.d.ts.map +1 -1
  55. package/dist/classes/framebuffer.js +15 -15
  56. package/dist/classes/framebuffer.js.map +1 -1
  57. package/dist/classes/program-configuration.d.ts +14 -17
  58. package/dist/classes/program-configuration.d.ts.map +1 -1
  59. package/dist/classes/program-configuration.js +10 -97
  60. package/dist/classes/program-configuration.js.map +1 -1
  61. package/dist/classes/program.d.ts +25 -20
  62. package/dist/classes/program.d.ts.map +1 -1
  63. package/dist/classes/program.js +39 -28
  64. package/dist/classes/program.js.map +1 -1
  65. package/dist/classes/query.d.ts.map +1 -1
  66. package/dist/classes/query.js +6 -5
  67. package/dist/classes/query.js.map +1 -1
  68. package/dist/classes/renderbuffer-formats.js +1 -1
  69. package/dist/classes/renderbuffer-formats.js.map +1 -1
  70. package/dist/classes/renderbuffer.d.ts.map +1 -1
  71. package/dist/classes/renderbuffer.js +4 -3
  72. package/dist/classes/renderbuffer.js.map +1 -1
  73. package/dist/classes/{webgl-shader.d.ts → shader.d.ts} +4 -13
  74. package/dist/classes/shader.d.ts.map +1 -0
  75. package/dist/classes/{webgl-shader.js → shader.js} +7 -79
  76. package/dist/classes/shader.js.map +1 -0
  77. package/dist/classes/texture-2d.d.ts +4 -3
  78. package/dist/classes/texture-2d.d.ts.map +1 -1
  79. package/dist/classes/texture-2d.js +5 -8
  80. package/dist/classes/texture-2d.js.map +1 -1
  81. package/dist/classes/texture-3d.d.ts +3 -2
  82. package/dist/classes/texture-3d.d.ts.map +1 -1
  83. package/dist/classes/texture-3d.js +15 -6
  84. package/dist/classes/texture-3d.js.map +1 -1
  85. package/dist/classes/texture-cube.d.ts +2 -1
  86. package/dist/classes/texture-cube.d.ts.map +1 -1
  87. package/dist/classes/texture-cube.js +3 -4
  88. package/dist/classes/texture-cube.js.map +1 -1
  89. package/dist/classes/texture-formats.js +1 -1
  90. package/dist/classes/texture-formats.js.map +1 -1
  91. package/dist/classes/texture.d.ts +14 -9
  92. package/dist/classes/texture.d.ts.map +1 -1
  93. package/dist/classes/texture.js +19 -18
  94. package/dist/classes/texture.js.map +1 -1
  95. package/dist/classes/transform-feedback.d.ts.map +1 -1
  96. package/dist/classes/transform-feedback.js +5 -4
  97. package/dist/classes/transform-feedback.js.map +1 -1
  98. package/dist/classes/uniform-buffer-layout.js +1 -1
  99. package/dist/classes/uniform-buffer-layout.js.map +1 -1
  100. package/dist/classes/uniforms.d.ts +0 -1
  101. package/dist/classes/uniforms.d.ts.map +1 -1
  102. package/dist/classes/uniforms.js +1 -2
  103. package/dist/classes/uniforms.js.map +1 -1
  104. package/dist/classes/vertex-array-object.d.ts +7 -6
  105. package/dist/classes/vertex-array-object.d.ts.map +1 -1
  106. package/dist/classes/vertex-array-object.js +11 -12
  107. package/dist/classes/vertex-array-object.js.map +1 -1
  108. package/dist/classes/vertex-array.d.ts +14 -14
  109. package/dist/classes/vertex-array.d.ts.map +1 -1
  110. package/dist/classes/vertex-array.js +3 -4
  111. package/dist/classes/vertex-array.js.map +1 -1
  112. package/dist/classes/webgl-buffer.d.ts +2 -0
  113. package/dist/classes/webgl-buffer.d.ts.map +1 -1
  114. package/dist/classes/webgl-buffer.js +8 -5
  115. package/dist/classes/webgl-buffer.js.map +1 -1
  116. package/dist/classes/webgl-resource.d.ts +6 -4
  117. package/dist/classes/webgl-resource.d.ts.map +1 -1
  118. package/dist/classes/webgl-resource.js +12 -8
  119. package/dist/classes/webgl-resource.js.map +1 -1
  120. package/dist/context/context/context-state.d.ts +18 -0
  121. package/dist/context/context/context-state.d.ts.map +1 -0
  122. package/dist/context/context/context-state.js +26 -0
  123. package/dist/context/context/context-state.js.map +1 -0
  124. package/dist/context/context/create-context.d.ts +40 -0
  125. package/dist/context/context/create-context.d.ts.map +1 -0
  126. package/dist/context/context/create-context.js +37 -0
  127. package/dist/context/context/create-context.js.map +1 -0
  128. package/dist/context/context/device-pixels.d.ts +25 -0
  129. package/dist/context/context/device-pixels.d.ts.map +1 -0
  130. package/dist/context/context/device-pixels.js +98 -0
  131. package/dist/context/context/device-pixels.js.map +1 -0
  132. package/dist/context/context/get-canvas.d.ts +13 -0
  133. package/dist/context/context/get-canvas.d.ts.map +1 -0
  134. package/dist/context/context/get-canvas.js +31 -0
  135. package/dist/context/context/get-canvas.js.map +1 -0
  136. package/dist/context/context/resize-context.d.ts +20 -0
  137. package/dist/context/context/resize-context.d.ts.map +1 -0
  138. package/dist/context/context/resize-context.js +15 -0
  139. package/dist/context/context/resize-context.js.map +1 -0
  140. package/dist/context/context/webgl-checks.d.ts +13 -0
  141. package/dist/context/context/webgl-checks.d.ts.map +1 -0
  142. package/dist/context/context/webgl-checks.js +34 -0
  143. package/dist/context/context/webgl-checks.js.map +1 -0
  144. package/dist/context/parameters/unified-parameter-api.d.ts +31 -0
  145. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -0
  146. package/dist/context/parameters/unified-parameter-api.js +65 -0
  147. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  148. package/dist/context/parameters/webgl-parameter-tables.d.ts +169 -0
  149. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -0
  150. package/dist/context/parameters/webgl-parameter-tables.js +445 -0
  151. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  152. package/dist/context/parameters/webgl-parameters.d.ts +144 -0
  153. package/dist/context/parameters/webgl-parameters.d.ts.map +1 -0
  154. package/dist/context/parameters/webgl-parameters.js +2 -0
  155. package/dist/context/parameters/webgl-parameters.js.map +1 -0
  156. package/dist/context/polyfill/get-parameter-polyfill.d.ts +2 -0
  157. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -0
  158. package/dist/context/polyfill/get-parameter-polyfill.js +91 -0
  159. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -0
  160. package/dist/context/polyfill/polyfill-context.d.ts +5 -0
  161. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -0
  162. package/dist/context/polyfill/polyfill-context.js +91 -0
  163. package/dist/context/polyfill/polyfill-context.js.map +1 -0
  164. package/dist/context/polyfill/polyfill-table.d.ts +48 -0
  165. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -0
  166. package/dist/context/polyfill/polyfill-table.js +160 -0
  167. package/dist/context/polyfill/polyfill-table.js.map +1 -0
  168. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +2 -0
  169. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -0
  170. package/dist/context/polyfill/polyfill-vertex-array-object.js +335 -0
  171. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  172. package/dist/context/state-tracker/deep-array-equal.d.ts +3 -0
  173. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -0
  174. package/dist/context/state-tracker/deep-array-equal.js +21 -0
  175. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  176. package/dist/context/state-tracker/track-context-state.d.ts +22 -0
  177. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -0
  178. package/dist/context/state-tracker/track-context-state.js +169 -0
  179. package/dist/context/state-tracker/track-context-state.js.map +1 -0
  180. package/dist/context/state-tracker/with-parameters.d.ts +13 -0
  181. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -0
  182. package/dist/context/state-tracker/with-parameters.js +36 -0
  183. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  184. package/dist/debug/debug-uniforms.js +1 -1
  185. package/dist/debug/debug-uniforms.js.map +1 -1
  186. package/dist/debug/debug-vertex-array.js +2 -2
  187. package/dist/debug/debug-vertex-array.js.map +1 -1
  188. package/dist/es5/_deprecated/context-api.js +116 -0
  189. package/dist/es5/_deprecated/context-api.js.map +1 -0
  190. package/dist/es5/_deprecated/features.js +118 -0
  191. package/dist/es5/_deprecated/features.js.map +1 -0
  192. package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
  193. package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
  194. package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
  195. package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
  196. package/dist/es5/adapter/device-helpers/device-features.js +152 -0
  197. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
  198. package/dist/es5/adapter/device-helpers/device-limits.js +64 -0
  199. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
  200. package/dist/es5/adapter/device-helpers/get-device-info.js +55 -0
  201. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
  202. package/dist/es5/adapter/device-helpers/is-old-ie.js +16 -0
  203. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -0
  204. package/dist/es5/adapter/webgl-device.js +279 -0
  205. package/dist/es5/adapter/webgl-device.js.map +1 -0
  206. package/dist/es5/adapter/webgl-shader.js +155 -0
  207. package/dist/es5/adapter/webgl-shader.js.map +1 -0
  208. package/dist/es5/bundle.js +1 -1
  209. package/dist/es5/bundle.js.map +1 -1
  210. package/dist/es5/classes/accessor.js +104 -74
  211. package/dist/es5/classes/accessor.js.map +1 -1
  212. package/dist/es5/classes/accessor.ts.disabled +1 -1
  213. package/dist/es5/classes/clear.js +55 -34
  214. package/dist/es5/classes/clear.js.map +1 -1
  215. package/dist/es5/classes/copy-and-blit.js +175 -156
  216. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  217. package/dist/es5/classes/framebuffer.js +647 -518
  218. package/dist/es5/classes/framebuffer.js.map +1 -1
  219. package/dist/es5/classes/program-configuration.js +78 -128
  220. package/dist/es5/classes/program-configuration.js.map +1 -1
  221. package/dist/es5/classes/program.js +379 -292
  222. package/dist/es5/classes/program.js.map +1 -1
  223. package/dist/es5/classes/query.js +172 -107
  224. package/dist/es5/classes/query.js.map +1 -1
  225. package/dist/es5/classes/renderbuffer-formats.js +126 -164
  226. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  227. package/dist/es5/classes/renderbuffer.js +151 -98
  228. package/dist/es5/classes/renderbuffer.js.map +1 -1
  229. package/dist/es5/classes/shader.js +195 -0
  230. package/dist/es5/classes/shader.js.map +1 -0
  231. package/dist/es5/classes/texture-2d.js +44 -17
  232. package/dist/es5/classes/texture-2d.js.map +1 -1
  233. package/dist/es5/classes/texture-3d.js +107 -48
  234. package/dist/es5/classes/texture-3d.js.map +1 -1
  235. package/dist/es5/classes/texture-cube.js +169 -110
  236. package/dist/es5/classes/texture-cube.js.map +1 -1
  237. package/dist/es5/classes/texture-formats.js +42 -71
  238. package/dist/es5/classes/texture-formats.js.map +1 -1
  239. package/dist/es5/classes/texture.js +780 -665
  240. package/dist/es5/classes/texture.js.map +1 -1
  241. package/dist/es5/classes/transform-feedback.js +206 -150
  242. package/dist/es5/classes/transform-feedback.js.map +1 -1
  243. package/dist/es5/classes/uniform-buffer-layout.js +103 -89
  244. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  245. package/dist/es5/classes/uniforms.js +39 -80
  246. package/dist/es5/classes/uniforms.js.map +1 -1
  247. package/dist/es5/classes/vertex-array-object.js +268 -209
  248. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  249. package/dist/es5/classes/vertex-array.js +348 -303
  250. package/dist/es5/classes/vertex-array.js.map +1 -1
  251. package/dist/es5/classes/webgl-buffer.js +374 -303
  252. package/dist/es5/classes/webgl-buffer.js.map +1 -1
  253. package/dist/es5/classes/webgl-resource.js +231 -161
  254. package/dist/es5/classes/webgl-resource.js.map +1 -1
  255. package/dist/es5/context/context/context-state.js +31 -0
  256. package/dist/es5/context/context/context-state.js.map +1 -0
  257. package/dist/es5/context/context/create-context.js +57 -0
  258. package/dist/es5/context/context/create-context.js.map +1 -0
  259. package/dist/es5/context/context/device-pixels.js +115 -0
  260. package/dist/es5/context/context/device-pixels.js.map +1 -0
  261. package/dist/es5/context/context/get-canvas.js +40 -0
  262. package/dist/es5/context/context/get-canvas.js.map +1 -0
  263. package/dist/es5/context/context/resize-context.js +23 -0
  264. package/dist/es5/context/context/resize-context.js.map +1 -0
  265. package/dist/es5/context/context/webgl-checks.js +54 -0
  266. package/dist/es5/context/context/webgl-checks.js.map +1 -0
  267. package/dist/es5/context/parameters/unified-parameter-api.js +95 -0
  268. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -0
  269. package/dist/es5/context/parameters/webgl-parameter-tables.js +392 -0
  270. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -0
  271. package/dist/es5/context/parameters/webgl-parameters.js +6 -0
  272. package/dist/es5/context/parameters/webgl-parameters.js.map +1 -0
  273. package/dist/es5/context/polyfill/get-parameter-polyfill.js +81 -0
  274. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -0
  275. package/dist/es5/context/polyfill/polyfill-context.js +134 -0
  276. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -0
  277. package/dist/es5/context/polyfill/polyfill-table.js +166 -0
  278. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -0
  279. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +341 -0
  280. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  281. package/dist/es5/context/state-tracker/deep-array-equal.js +28 -0
  282. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -0
  283. package/dist/es5/context/state-tracker/track-context-state.js +196 -0
  284. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -0
  285. package/dist/es5/context/state-tracker/with-parameters.js +44 -0
  286. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -0
  287. package/dist/es5/debug/debug-program-configuration.js +48 -20
  288. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  289. package/dist/es5/debug/debug-uniforms.js +110 -70
  290. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  291. package/dist/es5/debug/debug-vertex-array.js +49 -54
  292. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  293. package/dist/es5/helpers/get-program-bindings.js +274 -0
  294. package/dist/es5/helpers/get-program-bindings.js.map +1 -0
  295. package/dist/es5/helpers/program-bindings.js +2 -0
  296. package/dist/es5/helpers/program-bindings.js.map +1 -0
  297. package/dist/es5/index.js +268 -192
  298. package/dist/es5/index.js.map +1 -1
  299. package/dist/es5/init.js +18 -14
  300. package/dist/es5/init.js.map +1 -1
  301. package/dist/es5/types/accessor.d.ts +29 -0
  302. package/dist/es5/webgl-utils/attribute-utils.js +74 -87
  303. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  304. package/dist/es5/webgl-utils/constants-to-keys.js +7 -7
  305. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  306. package/dist/es5/webgl-utils/format-utils.js +4 -4
  307. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  308. package/dist/es5/webgl-utils/get-error.js +18 -18
  309. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  310. package/dist/es5/webgl-utils/index.js +10 -10
  311. package/dist/es5/webgl-utils/parse-shader-compiler-log.js +53 -25
  312. package/dist/es5/webgl-utils/parse-shader-compiler-log.js.map +1 -1
  313. package/dist/es5/webgl-utils/texture-utils.js +32 -36
  314. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  315. package/dist/es5/webgl-utils/typed-array-utils.js +33 -32
  316. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  317. package/dist/esm/_deprecated/context-api.js +76 -0
  318. package/dist/esm/_deprecated/context-api.js.map +1 -0
  319. package/dist/esm/_deprecated/features.js +111 -0
  320. package/dist/esm/_deprecated/features.js.map +1 -0
  321. package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
  322. package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
  323. package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
  324. package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
  325. package/dist/esm/adapter/device-helpers/device-features.js +123 -0
  326. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
  327. package/dist/esm/adapter/device-helpers/device-limits.js +90 -0
  328. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
  329. package/dist/esm/adapter/device-helpers/get-device-info.js +44 -0
  330. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
  331. package/dist/{features/check-old-ie.js → esm/adapter/device-helpers/is-old-ie.js} +3 -3
  332. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
  333. package/dist/esm/adapter/webgl-device.js +207 -0
  334. package/dist/esm/adapter/webgl-device.js.map +1 -0
  335. package/dist/esm/adapter/webgl-shader.js +82 -0
  336. package/dist/esm/adapter/webgl-shader.js.map +1 -0
  337. package/dist/esm/classes/accessor.js +2 -2
  338. package/dist/esm/classes/accessor.js.map +1 -1
  339. package/dist/esm/classes/accessor.ts.disabled +1 -1
  340. package/dist/esm/classes/clear.js +7 -4
  341. package/dist/esm/classes/clear.js.map +1 -1
  342. package/dist/esm/classes/copy-and-blit.js +30 -25
  343. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  344. package/dist/esm/classes/framebuffer.js +15 -15
  345. package/dist/esm/classes/framebuffer.js.map +1 -1
  346. package/dist/esm/classes/program-configuration.js +10 -97
  347. package/dist/esm/classes/program-configuration.js.map +1 -1
  348. package/dist/esm/classes/program.js +39 -28
  349. package/dist/esm/classes/program.js.map +1 -1
  350. package/dist/esm/classes/query.js +6 -5
  351. package/dist/esm/classes/query.js.map +1 -1
  352. package/dist/esm/classes/renderbuffer-formats.js +1 -1
  353. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  354. package/dist/esm/classes/renderbuffer.js +4 -3
  355. package/dist/esm/classes/renderbuffer.js.map +1 -1
  356. package/dist/esm/classes/{webgl-shader.js → shader.js} +7 -79
  357. package/dist/esm/classes/shader.js.map +1 -0
  358. package/dist/esm/classes/texture-2d.js +5 -8
  359. package/dist/esm/classes/texture-2d.js.map +1 -1
  360. package/dist/esm/classes/texture-3d.js +15 -6
  361. package/dist/esm/classes/texture-3d.js.map +1 -1
  362. package/dist/esm/classes/texture-cube.js +3 -4
  363. package/dist/esm/classes/texture-cube.js.map +1 -1
  364. package/dist/esm/classes/texture-formats.js +1 -1
  365. package/dist/esm/classes/texture-formats.js.map +1 -1
  366. package/dist/esm/classes/texture.js +19 -18
  367. package/dist/esm/classes/texture.js.map +1 -1
  368. package/dist/esm/classes/transform-feedback.js +5 -4
  369. package/dist/esm/classes/transform-feedback.js.map +1 -1
  370. package/dist/esm/classes/uniform-buffer-layout.js +1 -1
  371. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  372. package/dist/esm/classes/uniforms.js +1 -2
  373. package/dist/esm/classes/uniforms.js.map +1 -1
  374. package/dist/esm/classes/vertex-array-object.js +11 -12
  375. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  376. package/dist/esm/classes/vertex-array.js +3 -4
  377. package/dist/esm/classes/vertex-array.js.map +1 -1
  378. package/dist/esm/classes/webgl-buffer.js +8 -5
  379. package/dist/esm/classes/webgl-buffer.js.map +1 -1
  380. package/dist/esm/classes/webgl-resource.js +12 -8
  381. package/dist/esm/classes/webgl-resource.js.map +1 -1
  382. package/dist/esm/context/context/context-state.js +26 -0
  383. package/dist/esm/context/context/context-state.js.map +1 -0
  384. package/dist/esm/context/context/create-context.js +37 -0
  385. package/dist/esm/context/context/create-context.js.map +1 -0
  386. package/dist/esm/context/context/device-pixels.js +98 -0
  387. package/dist/esm/context/context/device-pixels.js.map +1 -0
  388. package/dist/esm/context/context/get-canvas.js +31 -0
  389. package/dist/esm/context/context/get-canvas.js.map +1 -0
  390. package/dist/esm/context/context/resize-context.js +15 -0
  391. package/dist/esm/context/context/resize-context.js.map +1 -0
  392. package/dist/esm/context/context/webgl-checks.js +34 -0
  393. package/dist/esm/context/context/webgl-checks.js.map +1 -0
  394. package/dist/esm/context/parameters/unified-parameter-api.js +65 -0
  395. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -0
  396. package/dist/esm/context/parameters/webgl-parameter-tables.js +445 -0
  397. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -0
  398. package/dist/esm/context/parameters/webgl-parameters.js +2 -0
  399. package/dist/esm/context/parameters/webgl-parameters.js.map +1 -0
  400. package/dist/esm/context/polyfill/get-parameter-polyfill.js +91 -0
  401. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -0
  402. package/dist/esm/context/polyfill/polyfill-context.js +91 -0
  403. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -0
  404. package/dist/esm/context/polyfill/polyfill-table.js +160 -0
  405. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -0
  406. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +335 -0
  407. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -0
  408. package/dist/esm/context/state-tracker/deep-array-equal.js +21 -0
  409. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -0
  410. package/dist/esm/context/state-tracker/track-context-state.js +169 -0
  411. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -0
  412. package/dist/esm/context/state-tracker/with-parameters.js +36 -0
  413. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -0
  414. package/dist/esm/debug/debug-uniforms.js +1 -1
  415. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  416. package/dist/esm/debug/debug-vertex-array.js +2 -2
  417. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  418. package/dist/esm/helpers/get-program-bindings.js +228 -0
  419. package/dist/esm/helpers/get-program-bindings.js.map +1 -0
  420. package/dist/esm/helpers/program-bindings.js +2 -0
  421. package/dist/esm/helpers/program-bindings.js.map +1 -0
  422. package/dist/esm/index.js +26 -20
  423. package/dist/esm/index.js.map +1 -1
  424. package/dist/esm/init.js +11 -8
  425. package/dist/esm/init.js.map +1 -1
  426. package/dist/esm/types/accessor.d.ts +29 -0
  427. package/dist/esm/webgl-utils/attribute-utils.js +1 -1
  428. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  429. package/dist/esm/webgl-utils/constants-to-keys.js +1 -1
  430. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  431. package/dist/esm/webgl-utils/format-utils.js +1 -1
  432. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  433. package/dist/esm/webgl-utils/texture-utils.js +2 -2
  434. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  435. package/dist/esm/webgl-utils/typed-array-utils.js +22 -18
  436. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  437. package/dist/helpers/get-program-bindings.d.ts +8 -0
  438. package/dist/helpers/get-program-bindings.d.ts.map +1 -0
  439. package/dist/helpers/get-program-bindings.js +228 -0
  440. package/dist/helpers/get-program-bindings.js.map +1 -0
  441. package/dist/helpers/program-bindings.d.ts +41 -0
  442. package/dist/helpers/program-bindings.d.ts.map +1 -0
  443. package/dist/helpers/program-bindings.js +2 -0
  444. package/dist/helpers/program-bindings.js.map +1 -0
  445. package/dist/index.d.ts +41 -20
  446. package/dist/index.d.ts.map +1 -1
  447. package/dist/index.js +26 -20
  448. package/dist/index.js.map +1 -1
  449. package/dist/init.d.ts.map +1 -1
  450. package/dist/init.js +11 -8
  451. package/dist/init.js.map +1 -1
  452. package/dist/types/accessor.d.ts +29 -0
  453. package/dist/webgl-utils/attribute-utils.d.ts +1 -1
  454. package/dist/webgl-utils/attribute-utils.js +1 -1
  455. package/dist/webgl-utils/attribute-utils.js.map +1 -1
  456. package/dist/webgl-utils/constants-to-keys.js +1 -1
  457. package/dist/webgl-utils/constants-to-keys.js.map +1 -1
  458. package/dist/webgl-utils/format-utils.d.ts +2 -2
  459. package/dist/webgl-utils/format-utils.js +1 -1
  460. package/dist/webgl-utils/format-utils.js.map +1 -1
  461. package/dist/webgl-utils/texture-utils.d.ts +12 -8
  462. package/dist/webgl-utils/texture-utils.d.ts.map +1 -1
  463. package/dist/webgl-utils/texture-utils.js +2 -2
  464. package/dist/webgl-utils/texture-utils.js.map +1 -1
  465. package/dist/webgl-utils/typed-array-utils.d.ts +39 -32
  466. package/dist/webgl-utils/typed-array-utils.d.ts.map +1 -1
  467. package/dist/webgl-utils/typed-array-utils.js +22 -18
  468. package/dist/webgl-utils/typed-array-utils.js.map +1 -1
  469. package/package.json +5 -6
  470. package/src/.DS_Store +0 -0
  471. package/src/_deprecated/context-api.ts +146 -0
  472. package/src/_deprecated/features.ts +159 -0
  473. package/src/adapter/converters/set-device-parameters.ts +182 -0
  474. package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
  475. package/src/adapter/device-helpers/device-features.ts +227 -0
  476. package/src/adapter/device-helpers/device-limits.ts +150 -0
  477. package/src/adapter/device-helpers/get-device-info.ts +49 -0
  478. package/src/{features/check-old-ie.ts → adapter/device-helpers/is-old-ie.ts} +3 -3
  479. package/src/adapter/webgl-device.ts +399 -0
  480. package/src/adapter/webgl-shader.ts +84 -0
  481. package/src/classes/accessor.js +2 -2
  482. package/src/classes/accessor.ts.disabled +1 -1
  483. package/src/classes/clear.ts +9 -4
  484. package/src/classes/copy-and-blit.ts +49 -52
  485. package/src/classes/framebuffer.ts +38 -35
  486. package/src/classes/program-configuration.ts +28 -81
  487. package/src/classes/program.ts +89 -75
  488. package/src/classes/query.ts +6 -6
  489. package/src/classes/renderbuffer-formats.ts +1 -1
  490. package/src/classes/renderbuffer.ts +5 -4
  491. package/src/classes/{webgl-shader.ts → shader.ts} +7 -78
  492. package/src/classes/texture-2d.ts +6 -11
  493. package/src/classes/texture-3d.ts +16 -11
  494. package/src/classes/texture-cube.ts +7 -7
  495. package/src/classes/texture-formats.ts +1 -1
  496. package/src/classes/texture.ts +39 -40
  497. package/src/classes/transform-feedback.ts +14 -13
  498. package/src/classes/uniform-buffer-layout.ts +1 -1
  499. package/src/classes/uniforms.ts +4 -10
  500. package/src/classes/vertex-array-object.ts +17 -20
  501. package/src/classes/vertex-array.ts +16 -11
  502. package/src/classes/webgl-buffer.ts +7 -5
  503. package/src/classes/webgl-resource.ts +20 -18
  504. package/src/context/context/context-state.ts +39 -0
  505. package/src/context/context/create-context.ts +83 -0
  506. package/src/context/context/device-pixels.ts +147 -0
  507. package/src/context/context/get-canvas.ts +37 -0
  508. package/src/context/context/resize-context.ts +37 -0
  509. package/src/context/context/webgl-checks.ts +49 -0
  510. package/src/context/parameters/unified-parameter-api.ts +128 -0
  511. package/src/context/parameters/webgl-parameter-tables.ts +625 -0
  512. package/src/context/parameters/webgl-parameters.ts +197 -0
  513. package/src/context/polyfill/get-parameter-polyfill.ts +118 -0
  514. package/src/context/polyfill/polyfill-context.ts +98 -0
  515. package/src/context/polyfill/polyfill-table.ts +162 -0
  516. package/src/context/polyfill/polyfill-vertex-array-object.ts +360 -0
  517. package/src/context/state-tracker/deep-array-equal.ts +20 -0
  518. package/src/context/state-tracker/track-context-state.ts +250 -0
  519. package/src/context/state-tracker/with-parameters.ts +50 -0
  520. package/src/debug/debug-uniforms.ts +1 -1
  521. package/src/debug/debug-vertex-array.ts +2 -4
  522. package/src/helpers/get-program-bindings.ts +244 -0
  523. package/src/helpers/program-bindings.ts +46 -0
  524. package/src/index.ts +94 -23
  525. package/src/init.ts +12 -9
  526. package/src/types/accessor.d.ts +29 -0
  527. package/src/types.ts +1 -1
  528. package/src/webgl-utils/attribute-utils.ts +1 -1
  529. package/src/webgl-utils/constants-to-keys.ts +1 -1
  530. package/src/webgl-utils/format-utils.ts +1 -1
  531. package/src/webgl-utils/{texture-utils.js → texture-utils.ts} +13 -10
  532. package/src/webgl-utils/{typed-array-utils.js → typed-array-utils.ts} +59 -16
  533. package/dist/classes/webgl-shader.d.ts.map +0 -1
  534. package/dist/classes/webgl-shader.js.map +0 -1
  535. package/dist/context/gl-context.d.ts +0 -15
  536. package/dist/context/gl-context.d.ts.map +0 -1
  537. package/dist/context/gl-context.js +0 -32
  538. package/dist/context/gl-context.js.map +0 -1
  539. package/dist/context/luma-context-data.d.ts +0 -31
  540. package/dist/context/luma-context-data.d.ts.map +0 -1
  541. package/dist/context/luma-context-data.js +0 -5
  542. package/dist/context/luma-context-data.js.map +0 -1
  543. package/dist/es5/classes/webgl-shader.js +0 -213
  544. package/dist/es5/classes/webgl-shader.js.map +0 -1
  545. package/dist/es5/context/gl-context.js +0 -46
  546. package/dist/es5/context/gl-context.js.map +0 -1
  547. package/dist/es5/context/luma-context-data.js +0 -12
  548. package/dist/es5/context/luma-context-data.js.map +0 -1
  549. package/dist/es5/features/check-glsl-extension.js +0 -40
  550. package/dist/es5/features/check-glsl-extension.js.map +0 -1
  551. package/dist/es5/features/check-old-ie.js +0 -15
  552. package/dist/es5/features/check-old-ie.js.map +0 -1
  553. package/dist/es5/features/features.js +0 -85
  554. package/dist/es5/features/features.js.map +0 -1
  555. package/dist/es5/features/index.js +0 -64
  556. package/dist/es5/features/index.js.map +0 -1
  557. package/dist/es5/features/limits.js +0 -72
  558. package/dist/es5/features/limits.js.map +0 -1
  559. package/dist/es5/features/webgl-features-table.js +0 -84
  560. package/dist/es5/features/webgl-features-table.js.map +0 -1
  561. package/dist/es5/features/webgl-limits-table.js +0 -172
  562. package/dist/es5/features/webgl-limits-table.js.map +0 -1
  563. package/dist/es5/utils/array-utils-flat.js +0 -50
  564. package/dist/es5/utils/array-utils-flat.js.map +0 -1
  565. package/dist/es5/utils/assert.js +0 -13
  566. package/dist/es5/utils/assert.js.map +0 -1
  567. package/dist/es5/utils/check-props.js +0 -50
  568. package/dist/es5/utils/check-props.js.map +0 -1
  569. package/dist/es5/utils/format-value.js +0 -57
  570. package/dist/es5/utils/format-value.js.map +0 -1
  571. package/dist/es5/utils/index.js +0 -68
  572. package/dist/es5/utils/index.js.map +0 -1
  573. package/dist/es5/utils/is-old-ie.js +0 -13
  574. package/dist/es5/utils/is-old-ie.js.map +0 -1
  575. package/dist/es5/utils/load-file.js +0 -43
  576. package/dist/es5/utils/load-file.js.map +0 -1
  577. package/dist/es5/utils/stub-methods.js +0 -25
  578. package/dist/es5/utils/stub-methods.js.map +0 -1
  579. package/dist/es5/utils/utils.js +0 -31
  580. package/dist/es5/utils/utils.js.map +0 -1
  581. package/dist/es5/webgl-utils/texture-utils.d.ts +0 -11
  582. package/dist/es5/webgl-utils/typed-array-utils.d.ts +0 -36
  583. package/dist/esm/classes/webgl-shader.js.map +0 -1
  584. package/dist/esm/context/gl-context.js +0 -32
  585. package/dist/esm/context/gl-context.js.map +0 -1
  586. package/dist/esm/context/luma-context-data.js +0 -5
  587. package/dist/esm/context/luma-context-data.js.map +0 -1
  588. package/dist/esm/features/check-glsl-extension.js +0 -27
  589. package/dist/esm/features/check-glsl-extension.js.map +0 -1
  590. package/dist/esm/features/check-old-ie.js.map +0 -1
  591. package/dist/esm/features/features.js +0 -67
  592. package/dist/esm/features/features.js.map +0 -1
  593. package/dist/esm/features/index.js +0 -5
  594. package/dist/esm/features/index.js.map +0 -1
  595. package/dist/esm/features/limits.js +0 -55
  596. package/dist/esm/features/limits.js.map +0 -1
  597. package/dist/esm/features/webgl-features-table.js +0 -71
  598. package/dist/esm/features/webgl-features-table.js.map +0 -1
  599. package/dist/esm/features/webgl-limits-table.js +0 -161
  600. package/dist/esm/features/webgl-limits-table.js.map +0 -1
  601. package/dist/esm/utils/array-utils-flat.js +0 -39
  602. package/dist/esm/utils/array-utils-flat.js.map +0 -1
  603. package/dist/esm/utils/assert.js +0 -6
  604. package/dist/esm/utils/assert.js.map +0 -1
  605. package/dist/esm/utils/check-props.js +0 -38
  606. package/dist/esm/utils/check-props.js.map +0 -1
  607. package/dist/esm/utils/format-value.js +0 -50
  608. package/dist/esm/utils/format-value.js.map +0 -1
  609. package/dist/esm/utils/index.js +0 -7
  610. package/dist/esm/utils/index.js.map +0 -1
  611. package/dist/esm/utils/is-old-ie.js +0 -5
  612. package/dist/esm/utils/is-old-ie.js.map +0 -1
  613. package/dist/esm/utils/load-file.js +0 -30
  614. package/dist/esm/utils/load-file.js.map +0 -1
  615. package/dist/esm/utils/stub-methods.js +0 -16
  616. package/dist/esm/utils/stub-methods.js.map +0 -1
  617. package/dist/esm/utils/utils.js +0 -20
  618. package/dist/esm/utils/utils.js.map +0 -1
  619. package/dist/esm/webgl-utils/texture-utils.d.ts +0 -11
  620. package/dist/esm/webgl-utils/typed-array-utils.d.ts +0 -36
  621. package/dist/features/check-glsl-extension.d.ts +0 -2
  622. package/dist/features/check-glsl-extension.d.ts.map +0 -1
  623. package/dist/features/check-glsl-extension.js +0 -27
  624. package/dist/features/check-glsl-extension.js.map +0 -1
  625. package/dist/features/check-old-ie.d.ts +0 -2
  626. package/dist/features/check-old-ie.d.ts.map +0 -1
  627. package/dist/features/check-old-ie.js.map +0 -1
  628. package/dist/features/features.d.ts +0 -6
  629. package/dist/features/features.d.ts.map +0 -1
  630. package/dist/features/features.js +0 -67
  631. package/dist/features/features.js.map +0 -1
  632. package/dist/features/index.d.ts +0 -5
  633. package/dist/features/index.d.ts.map +0 -1
  634. package/dist/features/index.js +0 -5
  635. package/dist/features/index.js.map +0 -1
  636. package/dist/features/limits.d.ts +0 -28
  637. package/dist/features/limits.d.ts.map +0 -1
  638. package/dist/features/limits.js +0 -55
  639. package/dist/features/limits.js.map +0 -1
  640. package/dist/features/webgl-features-table.d.ts.map +0 -1
  641. package/dist/features/webgl-features-table.js +0 -71
  642. package/dist/features/webgl-features-table.js.map +0 -1
  643. package/dist/features/webgl-limits-table.d.ts +0 -161
  644. package/dist/features/webgl-limits-table.d.ts.map +0 -1
  645. package/dist/features/webgl-limits-table.js +0 -161
  646. package/dist/features/webgl-limits-table.js.map +0 -1
  647. package/dist/utils/array-utils-flat.d.ts +0 -9
  648. package/dist/utils/array-utils-flat.d.ts.map +0 -1
  649. package/dist/utils/array-utils-flat.js +0 -39
  650. package/dist/utils/array-utils-flat.js.map +0 -1
  651. package/dist/utils/assert.d.ts +0 -2
  652. package/dist/utils/assert.d.ts.map +0 -1
  653. package/dist/utils/assert.js +0 -6
  654. package/dist/utils/assert.js.map +0 -1
  655. package/dist/utils/check-props.d.ts +0 -2
  656. package/dist/utils/check-props.d.ts.map +0 -1
  657. package/dist/utils/check-props.js +0 -38
  658. package/dist/utils/check-props.js.map +0 -1
  659. package/dist/utils/format-value.d.ts +0 -5
  660. package/dist/utils/format-value.d.ts.map +0 -1
  661. package/dist/utils/format-value.js +0 -50
  662. package/dist/utils/format-value.js.map +0 -1
  663. package/dist/utils/index.d.ts +0 -7
  664. package/dist/utils/index.d.ts.map +0 -1
  665. package/dist/utils/index.js +0 -7
  666. package/dist/utils/index.js.map +0 -1
  667. package/dist/utils/is-old-ie.d.ts +0 -4
  668. package/dist/utils/is-old-ie.d.ts.map +0 -1
  669. package/dist/utils/is-old-ie.js +0 -5
  670. package/dist/utils/is-old-ie.js.map +0 -1
  671. package/dist/utils/load-file.d.ts +0 -4
  672. package/dist/utils/load-file.d.ts.map +0 -1
  673. package/dist/utils/load-file.js +0 -30
  674. package/dist/utils/load-file.js.map +0 -1
  675. package/dist/utils/stub-methods.d.ts +0 -2
  676. package/dist/utils/stub-methods.d.ts.map +0 -1
  677. package/dist/utils/stub-methods.js +0 -16
  678. package/dist/utils/stub-methods.js.map +0 -1
  679. package/dist/utils/utils.d.ts +0 -15
  680. package/dist/utils/utils.d.ts.map +0 -1
  681. package/dist/utils/utils.js +0 -20
  682. package/dist/utils/utils.js.map +0 -1
  683. package/src/context/gl-context.ts +0 -31
  684. package/src/context/luma-context-data.ts +0 -27
  685. package/src/features/check-glsl-extension.ts +0 -34
  686. package/src/features/features.ts +0 -80
  687. package/src/features/index.ts +0 -5
  688. package/src/features/limits.ts +0 -66
  689. package/src/features/webgl-features-table.ts +0 -104
  690. package/src/features/webgl-limits-table.ts +0 -51
  691. package/src/utils/array-utils-flat.ts +0 -56
  692. package/src/utils/assert.ts +0 -7
  693. package/src/utils/check-props.ts +0 -68
  694. package/src/utils/format-value.ts +0 -37
  695. package/src/utils/index.ts +0 -6
  696. package/src/utils/is-old-ie.ts +0 -6
  697. package/src/utils/load-file.ts +0 -40
  698. package/src/utils/stub-methods.ts +0 -20
  699. package/src/utils/utils.ts +0 -35
  700. package/src/webgl-utils/texture-utils.d.ts +0 -11
  701. package/src/webgl-utils/typed-array-utils.d.ts +0 -36
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luma.gl/webgl",
3
- "version": "8.6.0-alpha.1",
3
+ "version": "8.6.0-alpha.5",
4
4
  "description": "WebGL2 Classes",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -35,10 +35,9 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@babel/runtime": "^7.0.0",
38
- "@luma.gl/api": "8.6.0-alpha.1",
39
- "@luma.gl/constants": "8.6.0-alpha.1",
40
- "@luma.gl/gltools": "8.6.0-alpha.1",
41
- "probe.gl": "^3.4.0"
38
+ "@luma.gl/api": "8.6.0-alpha.5",
39
+ "@luma.gl/constants": "8.6.0-alpha.5",
40
+ "@probe.gl/env": "^3.5.0"
42
41
  },
43
- "gitHead": "e3895ce8a6dd376394c6662bb8cf0e1ad1f233f3"
42
+ "gitHead": "c07a1da6a4cac293a1b10658adcaafe872ac9efe"
44
43
  }
package/src/.DS_Store ADDED
Binary file
@@ -0,0 +1,146 @@
1
+ // luma.gl, MIT license
2
+ // LEGACY luma.gl v8 API for WebGLRendering context
3
+ // DEPRECATED API - may be removed in luma.gl v9 or v10.
4
+
5
+ /* eslint-disable quotes */
6
+ import GL from '@luma.gl/constants';
7
+ import {WebGLDevice, WebGLDeviceProps} from '@luma.gl/webgl';
8
+ import {DEPRECATED_FEATURES} from './features';
9
+
10
+ export type GLContextOptions = WebGLDeviceProps & {
11
+ throwOnError?: boolean; // If set to false, return `null` if context creation fails.
12
+ };
13
+
14
+ /** @deprecated Use `new WebGLDevice()` or `luma.createDevice()` */
15
+ export function createGLContext(options?: GLContextOptions): WebGLRenderingContext | null {
16
+ const webglDevice = new WebGLDevice(options);
17
+ // Note: OK to return the context, it holds on to the device
18
+ return webglDevice.gl;
19
+ }
20
+
21
+ /** @deprecated Use `WebGLDevice.attach()` */
22
+ export function instrumentGLContext(
23
+ gl: WebGLRenderingContext | WebGL2RenderingContext,
24
+ options?: GLContextOptions
25
+ ): WebGLRenderingContext {
26
+ const webglDevice = WebGLDevice.attach(gl, options);
27
+ return webglDevice.gl;
28
+ }
29
+
30
+ /**
31
+ * Resize the canvas' drawing buffer.
32
+ *
33
+ * Can match the canvas CSS size, and optionally also consider devicePixelRatio
34
+ * Can be called every frame
35
+ *
36
+ * Regardless of size, the drawing buffer will always be scaled to the viewport, but
37
+ * for best visual results, usually set to either:
38
+ * canvas CSS width x canvas CSS height
39
+ * canvas CSS width * devicePixelRatio x canvas CSS height * devicePixelRatio
40
+ * See http://webgl2fundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
41
+ *
42
+ * resizeGLContext(gl, {width, height, useDevicePixels})
43
+ * @deprecated Use WebGLDevice.resize()
44
+ */
45
+ export function resizeGLContext(
46
+ gl: WebGLRenderingContext,
47
+ options?: {
48
+ width?: number;
49
+ height?: number;
50
+ useDevicePixels?: boolean | number;
51
+ }
52
+ ) {
53
+ const webglDevice = WebGLDevice.attach(gl);
54
+ webglDevice.resize(options);
55
+ }
56
+
57
+ /**
58
+ * Check one or more features
59
+ * @deprecated Use `WebGLDevice.features.has()`
60
+ */
61
+ export function hasFeatures(gl: WebGLRenderingContext, features: string | string[]): boolean {
62
+ const webglDevice = WebGLDevice.attach(gl);
63
+ const normalizedFeatures = Array.isArray(features) ? features : [features];
64
+ const deviceFeatures = normalizedFeatures.map(feature => classicToDeviceFeature(feature));
65
+ // @ts-expect-error Feature is a string enum
66
+ return deviceFeatures.every((feature) => webglDevice.features.has(feature));
67
+ }
68
+
69
+ function classicToDeviceFeature(feature: string): string {
70
+ const deviceFeature = feature.toLowerCase().replace(/\_/g, '-');
71
+ if (deviceFeature.startsWith('webgl2') || deviceFeature.startsWith('glsl-')) {
72
+ return deviceFeature;
73
+ }
74
+ return `webgl-${deviceFeature}`;
75
+ }
76
+
77
+ /**
78
+ * Check one feature
79
+ * @deprecated Use `WebGLDevice.features`
80
+ */
81
+ export function hasFeature(gl: WebGLRenderingContext, feature: string): boolean {
82
+ return hasFeatures(gl, feature);
83
+ }
84
+
85
+ /**
86
+ * Return a map of supported features
87
+ * @deprecated Use `WebGLDevice.features`
88
+ */
89
+ export function getFeatures(gl: WebGLRenderingContext): Record<string, boolean> {
90
+ const webglDevice = WebGLDevice.attach(gl);
91
+ const featureMap: Record<string, boolean> = {};
92
+ for (const feature in DEPRECATED_FEATURES) {
93
+ // @ts-expect-error Feature is a string enum
94
+ featureMap[feature] = webglDevice.features.has(classicToDeviceFeature(feature));
95
+ }
96
+ return featureMap;
97
+ }
98
+
99
+ /**
100
+ * Provides strings identifying the GPU vendor and driver.
101
+ * https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/
102
+ *
103
+ * @deprecated Use `WebGLDevice.info`
104
+ */
105
+ export function getContextDebugInfo(gl: WebGLRenderingContext): {
106
+ vendor: string;
107
+ renderer: string;
108
+ vendorMasked: string;
109
+ rendererMasked: string;
110
+ version: string;
111
+ } {
112
+ const webglDevice = WebGLDevice.attach(gl);
113
+ const info = webglDevice.info;
114
+ return {
115
+ ...webglDevice.info,
116
+ vendorMasked: webglDevice.info.vendor,
117
+ rendererMasked: webglDevice.info.renderer
118
+ };
119
+ }
120
+
121
+ /** @deprecated Use `WebGLDevice.info` */
122
+ export function getGLContextInfo(gl) {
123
+ const info = getContextDebugInfo(gl);
124
+ return {
125
+ [GL.UNMASKED_VENDOR_WEBGL]: info.vendor,
126
+ [GL.UNMASKED_RENDERER_WEBGL]: info.renderer,
127
+ [GL.VENDOR]: info.vendorMasked,
128
+ [GL.RENDERER]: info.rendererMasked,
129
+ [GL.VERSION]: info.version,
130
+ };
131
+ }
132
+
133
+ /** @deprecated Use `WebGLDevice.info` and `WebGLDevice.limits` */
134
+ export function getContextInfo(gl) {
135
+ return {
136
+ ...getContextDebugInfo(gl),
137
+ ...getContextLimits(gl),
138
+ info: getGLContextInfo(gl),
139
+ };
140
+ }
141
+
142
+ /** @deprecated Use `WebGLDevice.limits` */
143
+ export function getContextLimits(gl) {
144
+ const webglDevice = WebGLDevice.attach(gl);
145
+ return {limits: webglDevice.webglLimits};
146
+ }
@@ -0,0 +1,159 @@
1
+ // Feature detection for WebGL
2
+ // Provides a function that enables simple checking of which WebGL features are
3
+ // available in an WebGL1 or WebGL2 environment.
4
+
5
+ import GL from '@luma.gl/constants';
6
+ import {isWebGL2} from '@luma.gl/webgl';
7
+ import {assert} from '@luma.gl/api';
8
+
9
+ // TODO - this should be the default export, test cases need updating
10
+ export const DEPRECATED_FEATURES = {
11
+ WEBGL2: 'WEBGL2',
12
+
13
+ // API SUPPORT
14
+ VERTEX_ARRAY_OBJECT: 'VERTEX_ARRAY_OBJECT',
15
+ TIMER_QUERY: 'TIMER_QUERY',
16
+ INSTANCED_RENDERING: 'INSTANCED_RENDERING',
17
+ MULTIPLE_RENDER_TARGETS: 'MULTIPLE_RENDER_TARGETS',
18
+
19
+ // FEATURES
20
+ ELEMENT_INDEX_UINT32: 'ELEMENT_INDEX_UINT32',
21
+
22
+ // BLENDING
23
+ BLEND_EQUATION_MINMAX: 'BLEND_EQUATION_MINMAX',
24
+ FLOAT_BLEND: 'FLOAT_BLEND',
25
+
26
+ // TEXTURES: '// TEXTURES', RENDERBUFFERS
27
+ COLOR_ENCODING_SRGB: 'COLOR_ENCODING_SRGB',
28
+
29
+ // TEXTURES
30
+ TEXTURE_DEPTH: 'TEXTURE_DEPTH',
31
+ TEXTURE_FLOAT: 'TEXTURE_FLOAT',
32
+ TEXTURE_HALF_FLOAT: 'TEXTURE_HALF_FLOAT',
33
+
34
+ TEXTURE_FILTER_LINEAR_FLOAT: 'TEXTURE_FILTER_LINEAR_FLOAT',
35
+ TEXTURE_FILTER_LINEAR_HALF_FLOAT: 'TEXTURE_FILTER_LINEAR_HALF_FLOAT',
36
+ TEXTURE_FILTER_ANISOTROPIC: 'TEXTURE_FILTER_ANISOTROPIC',
37
+
38
+ // FRAMEBUFFERS: '// FRAMEBUFFERS', TEXTURES AND RENDERBUFFERS
39
+ COLOR_ATTACHMENT_RGBA32F: 'COLOR_ATTACHMENT_RGBA32F',
40
+ COLOR_ATTACHMENT_FLOAT: 'COLOR_ATTACHMENT_FLOAT',
41
+ COLOR_ATTACHMENT_HALF_FLOAT: 'COLOR_ATTACHMENT_HALF_FLOAT',
42
+
43
+ // GLSL extensions
44
+ GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',
45
+ GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',
46
+ GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',
47
+ GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD'
48
+ };
49
+
50
+ /** Extract all WebGL features */
51
+ export function getWebGLFeatures(gl: WebGLRenderingContext): Set<string> {
52
+ // Enable EXT_float_blend first: https://developer.mozilla.org/en-US/docs/Web/API/EXT_float_blend
53
+ gl.getExtension('EXT_color_buffer_float');
54
+ gl.getExtension('WEBGL_color_buffer_float');
55
+ gl.getExtension('EXT_float_blend');
56
+
57
+ const features = new Set<string>();
58
+ for (const feature in WEBGL_FEATURES) {
59
+ if (isFeatureSupported(gl, feature)) {
60
+ features.add(feature);
61
+ }
62
+ }
63
+ return features;
64
+ }
65
+
66
+ function isFeatureSupported(gl: WebGLRenderingContext, cap: string): boolean {
67
+ const feature = WEBGL_FEATURES[cap];
68
+ assert(feature, cap);
69
+
70
+ const [webgl1Feature, webgl2Feature] = feature;
71
+
72
+ // Get extension name from table
73
+ const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;
74
+
75
+ if (cap === DEPRECATED_FEATURES.COLOR_ATTACHMENT_RGBA32F && !isWebGL2(gl)) {
76
+ return checkFloat32ColorAttachment(gl);
77
+ }
78
+
79
+ // Check if the value is dependent on checking one or more extensions
80
+ if (typeof featureDefinition === 'string') {
81
+ return Boolean(gl.getExtension(featureDefinition));
82
+ }
83
+
84
+ return featureDefinition;
85
+ }
86
+
87
+
88
+ // function to test if Float 32 bit format texture can be bound as color attachment
89
+ function checkFloat32ColorAttachment(gl: WebGLRenderingContext) {
90
+ let texture: WebGLTexture;
91
+ let framebuffer: WebGLFramebuffer;
92
+ try {
93
+ const texture = gl.createTexture();
94
+ gl.bindTexture(GL.TEXTURE_2D, texture);
95
+
96
+ const level = 0;
97
+ const internalFormat = gl.RGBA;
98
+ const width = 1;
99
+ const height = 1;
100
+ const border = 0;
101
+ const srcFormat = gl.RGBA;
102
+ const srcType = gl.UNSIGNED_BYTE;
103
+ const pixel = new Uint8Array([0, 0, 255, 255]); // opaque blue
104
+ gl.texImage2D(gl.TEXTURE_2D, level, internalFormat,
105
+ width, height, border, srcFormat, srcType,
106
+ pixel);
107
+
108
+ const framebuffer = gl.createFramebuffer();
109
+ gl.bindFramebuffer(GL.FRAMEBUFFER, framebuffer);
110
+ gl.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, texture, 0);
111
+ const status = gl.checkFramebufferStatus(GL.FRAMEBUFFER) === GL.FRAMEBUFFER_COMPLETE;
112
+ return status;
113
+ } finally {
114
+ gl.deleteTexture(texture);
115
+ gl.deleteFramebuffer(framebuffer);
116
+ }
117
+ }
118
+
119
+ // Defines luma.gl "feature" names and semantics
120
+ // Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension
121
+ const WEBGL_FEATURES: Record<string, [boolean | string, boolean | string]> = {
122
+ [DEPRECATED_FEATURES.WEBGL2]: [false, true],
123
+
124
+ // API SUPPORT
125
+ [DEPRECATED_FEATURES.VERTEX_ARRAY_OBJECT]: ['OES_vertex_array_object', true],
126
+ [DEPRECATED_FEATURES.TIMER_QUERY]: ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],
127
+ [DEPRECATED_FEATURES.INSTANCED_RENDERING]: ['ANGLE_instanced_arrays', true],
128
+ [DEPRECATED_FEATURES.MULTIPLE_RENDER_TARGETS]: ['WEBGL_draw_buffers', true],
129
+
130
+ // FEATURES
131
+ [DEPRECATED_FEATURES.ELEMENT_INDEX_UINT32]: ['OES_element_index_uint', true],
132
+
133
+ // BLENDING
134
+ [DEPRECATED_FEATURES.BLEND_EQUATION_MINMAX]: ['EXT_blend_minmax', true],
135
+ [DEPRECATED_FEATURES.FLOAT_BLEND]: ['EXT_float_blend', 'EXT_float_blend'],
136
+
137
+ // TEXTURES, RENDERBUFFERS
138
+ [DEPRECATED_FEATURES.COLOR_ENCODING_SRGB]: ['EXT_sRGB', true],
139
+
140
+ // TEXTURES
141
+ [DEPRECATED_FEATURES.TEXTURE_DEPTH]: ['WEBGL_depth_texture', true],
142
+ [DEPRECATED_FEATURES.TEXTURE_FLOAT]: ['OES_texture_float', true],
143
+ [DEPRECATED_FEATURES.TEXTURE_HALF_FLOAT]: ['OES_texture_half_float', true],
144
+
145
+ [DEPRECATED_FEATURES.TEXTURE_FILTER_LINEAR_FLOAT]: ['OES_texture_float_linear', 'OES_texture_float_linear'],
146
+ [DEPRECATED_FEATURES.TEXTURE_FILTER_LINEAR_HALF_FLOAT]: ['OES_texture_half_float_linear', 'OES_texture_half_float_linear'],
147
+ [DEPRECATED_FEATURES.TEXTURE_FILTER_ANISOTROPIC]: ['EXT_texture_filter_anisotropic', 'EXT_texture_filter_anisotropic'],
148
+
149
+ // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS
150
+ [DEPRECATED_FEATURES.COLOR_ATTACHMENT_RGBA32F]: [false, 'EXT_color_buffer_float'], // Note override check
151
+ [DEPRECATED_FEATURES.COLOR_ATTACHMENT_FLOAT]: [false, 'EXT_color_buffer_float'],
152
+ [DEPRECATED_FEATURES.COLOR_ATTACHMENT_HALF_FLOAT]: ['EXT_color_buffer_half_float', 'EXT_color_buffer_half_float'],
153
+
154
+ // GLSL extensions
155
+ [DEPRECATED_FEATURES.GLSL_FRAG_DATA]: ['WEBGL_draw_buffers', true],
156
+ [DEPRECATED_FEATURES.GLSL_FRAG_DEPTH]: ['EXT_frag_depth', true],
157
+ [DEPRECATED_FEATURES.GLSL_DERIVATIVES]: ['OES_standard_derivatives', true],
158
+ [DEPRECATED_FEATURES.GLSL_TEXTURE_LOD]: ['EXT_shader_texture_lod', true]
159
+ };
@@ -0,0 +1,182 @@
1
+ import {Device, Parameters, CompareFunction, StencilOperation, log} from '@luma.gl/api';
2
+ import GL from '@luma.gl/constants';
3
+ import {WebGLDevice} from '@luma.gl/webgl';
4
+
5
+ /** Set WebGPU Style Parameters */
6
+ export function setDeviceParameters(device: Device, parameters: Parameters) {
7
+ const webglDevice = WebGLDevice.attach(device);
8
+ const {gl, gl2} = webglDevice;
9
+
10
+ // RASTERIZATION SETTINGS
11
+ if (parameters.cullMode) {
12
+ switch (parameters.cullMode) {
13
+ case 'none':
14
+ gl.disable(GL.CULL_FACE);
15
+ break;
16
+ case 'front':
17
+ gl.enable(GL.CULL_FACE);
18
+ gl.cullFace(GL.FRONT);
19
+ break;
20
+ case 'back':
21
+ gl.enable(GL.CULL_FACE);
22
+ gl.cullFace(GL.BACK);
23
+ break;
24
+ }
25
+ }
26
+
27
+ if (parameters.frontFace) {
28
+ gl.frontFace(map('frontFace', parameters.frontFace, {
29
+ ccw: GL.CCW,
30
+ cw: GL.CW
31
+ }));
32
+ }
33
+
34
+ if (parameters.depthBias !== undefined) {
35
+ gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);
36
+ }
37
+
38
+ // depthBiasSlopeScale: {
39
+ // // Handled by depthBias
40
+ // },
41
+
42
+ // DEPTH STENCIL
43
+
44
+ if (parameters.depthWriteEnabled !== undefined) {
45
+ gl.depthMask(mapBoolean('depthWriteEnabled', parameters.depthWriteEnabled));
46
+ }
47
+
48
+ if (parameters.depthCompare) {
49
+ parameters.depthCompare !== 'always' ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST),
50
+ gl.depthFunc(convertCompareFunction('depthCompare', parameters.depthCompare));
51
+ }
52
+
53
+ if (parameters.stencilWriteMask) {
54
+ const mask = parameters.stencilWriteMask;
55
+ gl.stencilMaskSeparate(GL.FRONT, mask);
56
+ gl.stencilMaskSeparate(GL.BACK, mask);
57
+ }
58
+
59
+ if (parameters.stencilReadMask) {
60
+ // stencilReadMask is handle inside stencil***Compare.
61
+ log.warn('stencilReadMask not supported under WebGL');
62
+ }
63
+
64
+ if (parameters.stencilCompare) {
65
+ const mask = parameters.stencilReadMask || 0xffffffff;
66
+ const glValue = convertCompareFunction('depthCompare', parameters.stencilCompare);
67
+ // TODO - ensure back doesn't overwrite
68
+ parameters.stencilCompare !== 'always' ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST),
69
+ gl.stencilFuncSeparate(GL.FRONT, glValue, 0, mask);
70
+ gl.stencilFuncSeparate(GL.BACK, glValue, 0, mask);
71
+ }
72
+
73
+ if (parameters.stencilPassOperation) {
74
+ const dppass = convertStencilOperation('stencilPassOperation', parameters.stencilPassOperation);
75
+ const sfail = convertStencilOperation('stencilFailOperation', parameters.stencilFailOperation);
76
+ const dpfail = convertStencilOperation('stencilDepthFailOperation', parameters.stencilDepthFailOperation);
77
+ gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);
78
+ gl.stencilOpSeparate(GL.BACK, sfail, dpfail, dppass);
79
+ }
80
+
81
+ // stencilDepthFailOperation() {
82
+ // // handled by stencilPassOperation
83
+ // },
84
+
85
+ // stencilFailOperation() {
86
+ // // handled by stencilPassOperation
87
+ // },
88
+
89
+ // COLOR STATE
90
+
91
+ // if (parameters.blend) {
92
+ // gl.enable(GL.BLEND);
93
+
94
+ // const blend = parameters.blend;
95
+
96
+ // let colorEquation = (blend && blend.color && blend.color.operation) || 'add';
97
+ // let alphaEquation = (blend && blend.alpha && blend.alpha.operation) || 'add';
98
+ // gl.blendEquationSeparate(colorEquation, alphaEquation);
99
+
100
+ // let colorSrcFactor = (blend && blend.color && blend.color.srcFactor) || 'one';
101
+ // let colorDstFactor = (blend && blend.color && blend.color.dstFactor) || 'zero';
102
+ // let alphaSrcFactor = (blend && blend.alpha && blend.alpha.srcFactor) || 'one';
103
+ // let alphaDstFactor = (blend && blend.alpha && blend.alpha.dstFactor) || 'zero';
104
+ // gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);
105
+ // }
106
+ }
107
+
108
+ /*
109
+ rasterizationState: {
110
+ cullMode: "back",
111
+ },
112
+
113
+ depthStencilState: {
114
+ depthWriteEnabled: true,
115
+ depthCompare: "less",
116
+ format: "depth24plus-stencil8",
117
+ },
118
+
119
+ colorStates: [
120
+ {
121
+ format: "bgra8unorm",
122
+ // colorBlend.srcFactor = wgpu::BlendFactor::SrcAlpha;
123
+ // colorBlend.dstFactor = wgpu::BlendFactor::OneMinusSrcAlpha;
124
+ // alphaBlend.srcFactor = wgpu::BlendFactor::SrcAlpha;
125
+ // alphaBlend.dstFactor = wgpu::BlendFactor::OneMinusSrcAlpha;
126
+ },
127
+ ],
128
+ });
129
+ */
130
+
131
+
132
+ export function convertCompareFunction(parameter, value: CompareFunction): number {
133
+ return map(parameter, value, {
134
+ 'never': GL.NEVER,
135
+ 'less': GL.LESS,
136
+ 'equal': GL.EQUAL,
137
+ 'less-equal': GL.LEQUAL,
138
+ 'greater': GL.GREATER,
139
+ 'not-equal': GL.NOTEQUAL,
140
+ 'greater-equal': GL.GEQUAL,
141
+ 'always': GL.ALWAYS
142
+ });
143
+ }
144
+
145
+ function convertStencilOperation(parameter, value: StencilOperation): number {
146
+ return map(parameter, value, {
147
+ 'keep': GL.KEEP,
148
+ 'zero': GL.ZERO,
149
+ 'replace': GL.REPLACE,
150
+ 'invert': GL.INVERT,
151
+ 'increment-clamp': GL.INCR,
152
+ 'decrement-clamp': GL.DECR,
153
+ 'increment-wrap': GL.INCR_WRAP,
154
+ 'decrement-wrap': GL.DECR_WRAP
155
+ });
156
+ }
157
+
158
+ function convertBlendOperationToEquation(parameter, value): number {
159
+ return map(parameter, value, {
160
+ 'add': GL.FUNC_ADD,
161
+ 'sub': GL.FUNC_SUBTRACT,
162
+ 'reverse-subtract': GL.FUNC_REVERSE_SUBTRACT,
163
+ // When using a WebGL 2 context, the following values are available additionally:
164
+ 'min': GL.MIN,
165
+ 'max': GL.MAX
166
+ });
167
+ }
168
+
169
+ function message(parameter, value) {
170
+ return `Illegal parameter ${value} for ${parameter}`;
171
+ }
172
+
173
+ function map(parameter, value, valueMap) {
174
+ if (!(value in valueMap)) {
175
+ throw new Error(message(parameter, value));
176
+ }
177
+ return valueMap[value];
178
+ }
179
+
180
+ function mapBoolean(parameter, value) {
181
+ return value;
182
+ }
@@ -0,0 +1,167 @@
1
+ import GL from '@luma.gl/constants';
2
+
3
+ // Define local extension strings to optimize minification
4
+ const SRGB = 'EXT_sRGB';
5
+ const EXT_FLOAT_WEBGL1 = 'WEBGL.color_buffer_float';
6
+ const EXT_FLOAT_WEBGL2 = 'EXT_color_buffer_float';
7
+ const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';
8
+
9
+ // const S3TC = 'WEBGL_compressed_texture_s3tc';
10
+ // const PVRTC = 'WEBGL_compressed_texture_pvrtc';
11
+ // const ES3 = 'WEBGL_compressed_texture_es3';
12
+ // const ETC1 = 'WEBGL_compressed_texture_etc1';
13
+ // const SRGB = 'EXT_sRGB';
14
+ // const DEPTH = 'WEBGL_depth_texture';
15
+
16
+ // NOTES:
17
+ // - gl2: format requires WebGL2, when using a WebGL 1 context, color renderbuffer formats are limited
18
+ // - b (bytes per pixel), for memory usage calculations.
19
+ // - c (channels)
20
+ // - p (packed)
21
+
22
+ export const TEXTURE_FORMAT_DEFINITIONS = {
23
+ // 8-bit formats
24
+ 'r8unorm': {b: 1, c: 1, gl: GL.R8, gl2: true},
25
+ 'r8snorm': {b: 1, c: 1},
26
+ 'r8uint': {b: 1, c: 1, gl: GL.R8UI, gl2: true},
27
+ 'r8sint': {b: 1, c: 1, gl: GL.R8I, gl2: true},
28
+
29
+ // 16-bit formats
30
+ 'r16uint': {b: 2, c: 1, gl: GL.R16UI, gl2: true},
31
+ 'r16sint': {b: 2, c: 1, gl: GL.R16I, gl2: true},
32
+ 'r16float': {b: 2, c: 1, gl: GL.R16F, gl2: EXT_FLOAT_WEBGL2},
33
+ 'rg8unorm': {b: 2, c: 2, gl: GL.RG8, gl2: true},
34
+ 'rg8snorm': {b: 2, c: 2},
35
+ 'rg8uint': {b: 2, c: 2, gl: GL.RG8UI, gl2: true},
36
+ 'rg8sint': {b: 2, c: 2, gl: GL.RG8I, gl2: true},
37
+
38
+ // Packed 16-bit formats
39
+ // 'rgba4norm?': {b: 2, c: 4, gl: GL.RGBA4, wgpu: false},
40
+ // 'rgb565norm?': {b: 2, c: 4, gl: GL.RGB565, wgpu: false},
41
+ // 'rgb5a1norm?': {b: 2, c: 4, gl: GL.RGB5_A1, wgpu: false},
42
+
43
+ // 24-bit formats
44
+ // 'rbg8norm?': {b: 3, c: 3, gl: GL.RGB8, gl2: true, wgpu: false},
45
+
46
+ // 32-bit formats
47
+ 'r32uint': {b: 4, c: 1, gl: GL.R32UI, gl2: true, bpp: 4},
48
+ 'r32sint': {b: 4, c: 1, gl: GL.R32I, gl2: true, bpp: 4},
49
+ 'r32float': {b: 4, c: 1, gl: GL.R32F, gl2: EXT_FLOAT_WEBGL2, bpp: 4},
50
+ 'rg16uint': {b: 4, c: 1, gl: GL.RG16UI, gl2: true, bpp: 4},
51
+ 'rg16sint': {b: 4, c: 2, gl: GL.RG16I, gl2: true, bpp: 4},
52
+ // When using a WebGL 2 context and the EXT_color_buffer_float WebGL2 extension
53
+ 'rg16float': {b: 4, c: 2, gl: GL.RG16F, gl2: EXT_FLOAT_WEBGL2, bpp: 4},
54
+ 'rgba8unorm': {b: 4, c: 2, gl: GL.RGBA8, gl2: true, bpp: 4},
55
+
56
+ 'rgba8unorm-srgb': {b: 4, c: 4, gl: GL.SRGB8_ALPHA8, gl2: true, gl1: SRGB, bpp: 4},
57
+ 'rgba8snorm': {b: 4, c: 4},
58
+ 'rgba8uint': {b: 4, c: 4, gl: GL.RGBA8UI, gl2: true, bpp: 4},
59
+ 'rgba8sint': {b: 4, c: 4, gl: GL.RGBA8I, gl2: true, bpp: 4},
60
+ 'bgra8unorm': {b: 4, c: 4},
61
+ 'bgra8unorm-srgb': {b: 4, c: 4},
62
+
63
+ // Packed 32-bit formats
64
+ 'rgb9e5ufloat': {b: 4, c: 3, p: 1, gl: GL.RGB9_E5, gl2: true, gl1: 'WEBGL_color_buffer_half_float'},
65
+ 'rg11b10ufloat': {b: 4, c: 3, p: 1, gl: GL.R11F_G11F_B10F, gl2: EXT_FLOAT_WEBGL2},
66
+ 'rgb10a2unorm': {b: 4, c: 4, p: 1, gl: GL.RGB10_A2, gl2: true},
67
+ // webgl2 only
68
+ // '?rgb10a2unorm?': {b: 4, c: 4, p: 1, webgpu: false, gl: GL.RGB10_A2UI, gl2: true, bpp: 4},
69
+
70
+ // 64-bit formats
71
+ 'rg32uint': {b: 8, c: 2, gl: GL.RG32UI, gl2: true},
72
+ 'rg32sint': {b: 8, c: 2, gl: GL.RG32I, gl2: true},
73
+ 'rg32float': {b: 8, c: 2, gl: GL.RG32F, gl2: EXT_FLOAT_WEBGL2},
74
+ 'rgba16uint': {b: 8, c: 4, gl: GL.RGBA16UI, gl2: true},
75
+ 'rgba16sint': {b: 8, c: 4, gl: GL.RGBA16I, gl2: true},
76
+ 'rgba16float': {b: 8, c: 4, gl: GL.RGBA16F, gl2: EXT_FLOAT_WEBGL2},
77
+
78
+ // 96-bit formats
79
+ // {gl: GL.RGB32F, dataFormat: GL.RGB, types: [GL.FLOAT], gl2: true},
80
+
81
+ // 128-bit formats
82
+ 'rgba32uint': {b: 16, c: 4, gl: GL.RGBA32UI, gl2: true},
83
+ 'rgba32sint': {b: 16, c: 4, gl: GL.RGBA32I, gl2: true},
84
+ 'rgba32float': {b: 16, c: 4, gl: GL.RGBA32F, gl2: EXT_FLOAT_WEBGL2}, // gl1: EXT_FLOAT_WEBGL1
85
+
86
+ // Depth and stencil formats
87
+ 'stencil8': {b: 1, c: 1, gl: GL.STENCIL_INDEX8}, // 8 stencil bits
88
+ 'depth16unorm': {b: 2, c: 1, gl: GL.DEPTH_COMPONENT16}, // 16 depth bits
89
+ 'depth24plus': {b: 3, c: 1, gl: GL.DEPTH_COMPONENT24, gl2: true},
90
+ 'depth24plus-stencil8': {b: 4, c: 2, p: 1, gl: GL.DEPTH24_STENCIL8, gl2: true},
91
+ 'depth32float': {b: 4, c: 1, gl: GL.DEPTH_COMPONENT32F, gl2: true},
92
+
93
+ // "depth24unorm-stencil8" feature
94
+ 'depth24unorm-stencil8': {b: 4, c: 2, p: 1, gl: GL.DEPTH_STENCIL},
95
+
96
+ // "depth32float-stencil8" feature
97
+ "depth32float-stencil8": {b: 5, c: 2, p: 1, gl: GL.DEPTH32F_STENCIL8, gl2: true},
98
+
99
+ // BC compressed formats usable if "texture-compression-bc" is both
100
+ // supported by the device/user agent and enabled in requestDevice.
101
+ 'bc1-rgba-unorm': {},
102
+ 'bc1-rgba-unorm-srgb': {},
103
+ 'bc2-rgba-unorm': {},
104
+ 'bc2-rgba-unorm-srgb': {},
105
+ 'bc3-rgba-unorm': {},
106
+ 'bc3-rgba-unorm-srgb': {},
107
+ 'bc4-r-unorm': {},
108
+ 'bc4-r-snorm': {},
109
+ 'bc5-rg-unorm': {},
110
+ 'bc5-rg-snorm': {},
111
+ 'bc6h-rgb-ufloat': {},
112
+ 'bc6h-rgb-float': {},
113
+ 'bc7-rgba-unorm': {},
114
+ 'bc7-rgba-unorm-srgb': {}
115
+ };
116
+
117
+ ////////////////////////////////////////////////////
118
+ // Compressed formats
119
+
120
+ // WEBGL_compressed_texture_s3tc
121
+
122
+ // {gl: GL.COMPRESSED_RGB_S3TC_DXT1_EXT, compressed: true, gl1: S3TC},
123
+ // {gl: GL.COMPRESSED_RGBA_S3TC_DXT1_EXT, compressed: true, gl1: S3TC},
124
+ // {gl: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT, compressed: true, gl1: S3TC},
125
+ // {gl: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT, compressed: true, gl1: S3TC},
126
+
127
+ // WEBGL_compressed_texture_es3
128
+
129
+ // {gl: GL.COMPRESSED_R11_EAC, compressed: true, gl1: ES3}, // RED
130
+ // {gl: GL.COMPRESSED_SIGNED_R11_EAC, compressed: true, gl1: ES3}, // RED
131
+ // {gl: GL.COMPRESSED_RG11_EAC, compressed: true, gl1: ES3}, // RG
132
+ // {gl: GL.COMPRESSED_SIGNED_RG11_EAC, compressed: true, gl1: ES3}, // RG
133
+ // {gl: GL.COMPRESSED_RGB8_ETC2, compressed: true, gl1: ES3}, // RGB
134
+ // {gl: GL.COMPRESSED_RGBA8_ETC2_EAC, compressed: true, gl1: ES3}, // RBG
135
+ // {gl: GL.COMPRESSED_SRGB8_ETC2, compressed: true, gl1: ES3}, // RGB
136
+ // {gl: GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, compressed: true, gl1: ES3}, // RGBA
137
+ // {gl: GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, compressed: true, gl1: ES3}, // RGBA
138
+ // {gl: GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, compressed: true, gl1: ES3}, // RGBA
139
+ /* WebGL2 guaranteed availability compressed formats?
140
+ COMPRESSED_R11_EAC RED
141
+ COMPRESSED_SIGNED_R11_EAC RED
142
+ COMPRESSED_RG11_EAC RG
143
+ COMPRESSED_SIGNED_RG11_EAC RG
144
+ COMPRESSED_RGB8_ETC2 RGB
145
+ COMPRESSED_SRGB8_ETC2 RGB
146
+ COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA
147
+ COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 RGBA
148
+ COMPRESSED_RGBA8_ETC2_EAC RGBA
149
+ COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
150
+ */
151
+
152
+ // WEBGL_compressed_texture_pvrtc
153
+
154
+ // {gl: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG, compressed: true, gl1: PVRTC},
155
+ // {gl: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, compressed: true, gl1: PVRTC},
156
+ // {gl: GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG, compressed: true, gl1: PVRTC},
157
+ // {gl: GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, compressed: true, gl1: PVRTC},
158
+
159
+ // WEBGL_compressed_texture_etc1
160
+
161
+ // {gl: GL.COMPRESSED_RGB_ETC1_WEBGL, compressed: true, gl1: ETC1},
162
+
163
+ // WEBGL_compressed_texture_atc
164
+
165
+ // {gl: GL.COMPRESSED_RGB_ATC_WEBGL, compressed: true, gl1: ETC1},
166
+ // {gl: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL, compressed: true, gl1: ETC1},
167
+ // {gl: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL, compressed: true, gl1: ETC1}