@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (553) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +12 -3
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +300 -146
  5. package/dist/adapter/converters/sampler-parameters.d.ts +3 -13
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +74 -219
  8. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  9. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  10. package/dist/adapter/converters/shader-formats.js +59 -0
  11. package/dist/adapter/converters/texture-formats.d.ts +41 -57
  12. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  13. package/dist/adapter/converters/texture-formats.js +490 -925
  14. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  15. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.js +56 -33
  17. package/dist/adapter/device-helpers/webgl-device-features.d.ts +20 -0
  18. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  19. package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
  20. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  21. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  22. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  23. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  24. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  25. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  26. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  27. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  28. package/dist/adapter/helpers/decode-webgl-types.js +101 -0
  29. package/dist/adapter/helpers/get-shader-layout.d.ts +2 -49
  30. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  31. package/dist/adapter/helpers/get-shader-layout.js +263 -307
  32. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  33. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  34. package/dist/adapter/helpers/parse-shader-compiler-log.js +48 -33
  35. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  36. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  37. package/dist/adapter/helpers/set-uniform.js +66 -111
  38. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  39. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  40. package/dist/adapter/helpers/webgl-topology-utils.js +88 -0
  41. package/dist/adapter/objects/constants-to-keys.d.ts +2 -4
  42. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  43. package/dist/adapter/objects/constants-to-keys.js +18 -38
  44. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  45. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  46. package/dist/adapter/objects/webgl-renderbuffer.js +92 -91
  47. package/dist/adapter/objects/webgl-resource.d.ts +6 -31
  48. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  49. package/dist/adapter/objects/webgl-resource.js +103 -205
  50. package/dist/adapter/resources/webgl-buffer.d.ts +20 -16
  51. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  52. package/dist/adapter/resources/webgl-buffer.js +163 -155
  53. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  54. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-command-buffer.js +283 -58
  56. package/dist/adapter/resources/webgl-command-encoder.d.ts +12 -6
  57. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  58. package/dist/adapter/resources/webgl-command-encoder.js +36 -52
  59. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  60. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -29
  61. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  62. package/dist/adapter/resources/webgl-framebuffer.js +184 -261
  63. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  64. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  65. package/dist/adapter/resources/webgl-query-set.js +136 -0
  66. package/dist/adapter/resources/webgl-render-pass.d.ts +21 -4
  67. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-render-pass.js +140 -20
  69. package/dist/adapter/resources/webgl-render-pipeline.d.ts +44 -21
  70. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-render-pipeline.js +371 -413
  72. package/dist/adapter/resources/webgl-sampler.d.ts +5 -6
  73. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-sampler.js +46 -46
  75. package/dist/adapter/resources/webgl-shader.d.ts +16 -6
  76. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-shader.js +113 -72
  78. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  79. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  80. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  81. package/dist/adapter/resources/webgl-texture.d.ts +53 -35
  82. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-texture.js +623 -822
  84. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  85. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  86. package/dist/adapter/resources/webgl-transform-feedback.js +162 -0
  87. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  88. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  89. package/dist/adapter/resources/webgl-vertex-array.js +239 -0
  90. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  91. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  92. package/dist/adapter/webgl-canvas-context.js +61 -50
  93. package/dist/adapter/webgl-device.d.ts +112 -55
  94. package/dist/adapter/webgl-device.d.ts.map +1 -1
  95. package/dist/adapter/webgl-device.js +453 -331
  96. package/dist/classic/accessor.d.ts +3 -3
  97. package/dist/classic/accessor.d.ts.map +1 -1
  98. package/dist/classic/accessor.js +135 -130
  99. package/dist/classic/clear.d.ts +22 -0
  100. package/dist/classic/clear.d.ts.map +1 -0
  101. package/dist/classic/clear.js +89 -0
  102. package/dist/classic/copy-and-blit.d.ts +62 -0
  103. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  104. package/dist/classic/copy-and-blit.js +191 -0
  105. package/dist/classic/format-utils.d.ts +3 -0
  106. package/dist/classic/format-utils.d.ts.map +1 -0
  107. package/dist/classic/format-utils.js +44 -0
  108. package/dist/classic/typed-array-utils.d.ts +17 -17
  109. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  110. package/dist/classic/typed-array-utils.js +96 -102
  111. package/dist/context/debug/spector.d.ts +1 -2
  112. package/dist/context/debug/spector.d.ts.map +1 -1
  113. package/dist/context/debug/spector.js +56 -63
  114. package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
  115. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  116. package/dist/context/debug/webgl-developer-tools.js +106 -102
  117. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  118. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  119. package/dist/context/helpers/create-browser-context.js +67 -0
  120. package/dist/context/helpers/webgl-context-data.d.ts +13 -0
  121. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  122. package/dist/context/helpers/webgl-context-data.js +21 -0
  123. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  124. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  125. package/dist/context/helpers/webgl-extensions.js +10 -0
  126. package/dist/context/parameters/unified-parameter-api.d.ts +4 -5
  127. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  128. package/dist/context/parameters/unified-parameter-api.js +91 -54
  129. package/dist/context/parameters/webgl-parameter-tables.d.ts +115 -106
  130. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  131. package/dist/context/parameters/webgl-parameter-tables.js +463 -423
  132. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  133. package/dist/context/state-tracker/deep-array-equal.js +19 -18
  134. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  135. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  136. package/dist/context/state-tracker/track-context-state.js +192 -163
  137. package/dist/context/state-tracker/with-parameters.d.ts +2 -2
  138. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  139. package/dist/context/state-tracker/with-parameters.js +44 -32
  140. package/dist/dist.dev.js +6574 -0
  141. package/dist/dist.min.js +10 -0
  142. package/dist/index.cjs +5586 -0
  143. package/dist/index.cjs.map +7 -0
  144. package/dist/index.d.ts +25 -32
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +37 -28
  147. package/dist/types.d.ts +3 -1
  148. package/dist/types.d.ts.map +1 -1
  149. package/dist/types.js +3 -1
  150. package/dist.min.js +19 -0
  151. package/package.json +22 -15
  152. package/src/adapter/converters/device-parameters.ts +217 -54
  153. package/src/adapter/converters/sampler-parameters.ts +46 -126
  154. package/src/adapter/converters/shader-formats.ts +69 -0
  155. package/src/adapter/converters/texture-formats.ts +369 -340
  156. package/src/adapter/converters/vertex-formats.ts +71 -10
  157. package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
  158. package/src/adapter/device-helpers/webgl-device-info.ts +111 -0
  159. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  160. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +38 -25
  161. package/src/adapter/helpers/get-shader-layout.ts +104 -158
  162. package/src/adapter/helpers/parse-shader-compiler-log.ts +31 -11
  163. package/src/adapter/helpers/set-uniform.ts +39 -36
  164. package/src/adapter/helpers/webgl-topology-utils.ts +110 -0
  165. package/src/adapter/objects/constants-to-keys.ts +8 -26
  166. package/src/adapter/objects/webgl-renderbuffer.ts +68 -40
  167. package/src/adapter/objects/webgl-resource.ts +16 -156
  168. package/src/adapter/resources/webgl-buffer.ts +103 -112
  169. package/src/adapter/resources/webgl-command-buffer.ts +333 -41
  170. package/src/adapter/resources/webgl-command-encoder.ts +33 -22
  171. package/src/adapter/resources/webgl-external-texture.ts +11 -8
  172. package/src/adapter/resources/webgl-framebuffer.ts +125 -165
  173. package/src/adapter/resources/webgl-query-set.ts +171 -0
  174. package/src/adapter/resources/webgl-render-pass.ts +176 -6
  175. package/src/adapter/resources/webgl-render-pipeline.ts +308 -229
  176. package/src/adapter/resources/webgl-sampler.ts +19 -18
  177. package/src/adapter/resources/webgl-shader.ts +91 -32
  178. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  179. package/src/adapter/resources/webgl-texture.ts +147 -184
  180. package/src/adapter/resources/webgl-transform-feedback.ts +196 -0
  181. package/src/adapter/resources/webgl-vertex-array.ts +282 -0
  182. package/src/adapter/webgl-canvas-context.ts +23 -22
  183. package/src/adapter/webgl-device.ts +411 -196
  184. package/src/classic/accessor.ts +12 -8
  185. package/src/classic/clear.ts +118 -0
  186. package/src/classic/copy-and-blit.ts +318 -0
  187. package/src/classic/format-utils.ts +47 -0
  188. package/src/classic/typed-array-utils.ts +19 -31
  189. package/src/context/debug/spector.ts +16 -10
  190. package/src/context/debug/webgl-developer-tools.ts +52 -32
  191. package/src/context/helpers/create-browser-context.ts +116 -0
  192. package/src/context/helpers/webgl-context-data.ts +31 -0
  193. package/src/context/helpers/webgl-extensions.ts +17 -0
  194. package/src/context/parameters/unified-parameter-api.ts +11 -16
  195. package/src/context/parameters/webgl-parameter-tables.ts +171 -121
  196. package/src/context/state-tracker/deep-array-equal.ts +3 -0
  197. package/src/context/state-tracker/track-context-state.ts +35 -26
  198. package/src/context/state-tracker/with-parameters.ts +12 -3
  199. package/src/index.ts +41 -55
  200. package/src/types.ts +6 -0
  201. package/dist/adapter/converters/device-parameters.js.map +0 -1
  202. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  203. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  204. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  205. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  206. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  207. package/dist/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  209. package/dist/adapter/device-helpers/device-features.d.ts +0 -9
  210. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  211. package/dist/adapter/device-helpers/device-features.js +0 -112
  212. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  213. package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
  214. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  215. package/dist/adapter/device-helpers/device-limits.js +0 -91
  216. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  217. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  218. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  219. package/dist/adapter/device-helpers/get-device-info.js +0 -44
  220. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  221. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  222. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  223. package/dist/adapter/device-helpers/is-old-ie.js +0 -8
  224. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  225. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  226. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  227. package/dist/adapter/helpers/attribute-utils.js +0 -81
  228. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  229. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  230. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  231. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  232. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  233. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  234. package/dist/adapter/helpers/uniforms.js +0 -99
  235. package/dist/adapter/helpers/uniforms.js.map +0 -1
  236. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  237. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  238. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  239. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  240. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  241. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  242. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  243. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  244. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  245. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  246. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  247. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  248. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  249. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  250. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  251. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  252. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  253. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  254. package/dist/adapter/webgl-device.js.map +0 -1
  255. package/dist/bundle.d.ts +0 -2
  256. package/dist/bundle.d.ts.map +0 -1
  257. package/dist/bundle.js +0 -5
  258. package/dist/bundle.js.map +0 -1
  259. package/dist/classic/accessor.js.map +0 -1
  260. package/dist/classic/buffer.d.ts +0 -95
  261. package/dist/classic/buffer.d.ts.map +0 -1
  262. package/dist/classic/buffer.js +0 -392
  263. package/dist/classic/buffer.js.map +0 -1
  264. package/dist/classic/typed-array-utils.js.map +0 -1
  265. package/dist/context/context/context-state.d.ts +0 -18
  266. package/dist/context/context/context-state.d.ts.map +0 -1
  267. package/dist/context/context/context-state.js +0 -26
  268. package/dist/context/context/context-state.js.map +0 -1
  269. package/dist/context/context/create-browser-context.d.ts +0 -41
  270. package/dist/context/context/create-browser-context.d.ts.map +0 -1
  271. package/dist/context/context/create-browser-context.js +0 -61
  272. package/dist/context/context/create-browser-context.js.map +0 -1
  273. package/dist/context/context/create-headless-context.d.ts +0 -9
  274. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  275. package/dist/context/context/create-headless-context.js +0 -43
  276. package/dist/context/context/create-headless-context.js.map +0 -1
  277. package/dist/context/context/device-pixels.d.ts +0 -25
  278. package/dist/context/context/device-pixels.d.ts.map +0 -1
  279. package/dist/context/context/device-pixels.js +0 -103
  280. package/dist/context/context/device-pixels.js.map +0 -1
  281. package/dist/context/context/webgl-checks.d.ts +0 -13
  282. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  283. package/dist/context/context/webgl-checks.js +0 -34
  284. package/dist/context/context/webgl-checks.js.map +0 -1
  285. package/dist/context/debug/spector.js.map +0 -1
  286. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  287. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  288. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  289. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  290. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  291. package/dist/context/polyfill/get-parameter-polyfill.js +0 -91
  292. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  293. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  294. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  295. package/dist/context/polyfill/polyfill-context.js +0 -91
  296. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  297. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  298. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  299. package/dist/context/polyfill/polyfill-table.js +0 -160
  300. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  301. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  302. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  303. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -335
  304. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  305. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  306. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  307. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  308. package/dist/es5/adapter/converters/device-parameters.js +0 -185
  309. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  310. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  311. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  312. package/dist/es5/adapter/converters/sampler-parameters.js +0 -245
  313. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  314. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  315. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  316. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  317. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  318. package/dist/es5/adapter/device-helpers/device-features.js +0 -155
  319. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  320. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  321. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  323. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  324. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  325. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  326. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  327. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  328. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -391
  329. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  330. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  331. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  332. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  333. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  334. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  335. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  336. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  337. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  338. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  339. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  340. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  341. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  342. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  343. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  345. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  347. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  349. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  351. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -346
  353. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  354. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -62
  355. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  356. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -530
  357. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  358. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  359. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  360. package/dist/es5/adapter/resources/webgl-shader.js +0 -150
  361. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  362. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  363. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  364. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  365. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  366. package/dist/es5/adapter/webgl-device.js +0 -463
  367. package/dist/es5/adapter/webgl-device.js.map +0 -1
  368. package/dist/es5/bundle.js +0 -7
  369. package/dist/es5/bundle.js.map +0 -1
  370. package/dist/es5/classic/accessor.js +0 -181
  371. package/dist/es5/classic/accessor.js.map +0 -1
  372. package/dist/es5/classic/buffer.js +0 -478
  373. package/dist/es5/classic/buffer.js.map +0 -1
  374. package/dist/es5/classic/typed-array-utils.js +0 -126
  375. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  376. package/dist/es5/context/context/context-state.js +0 -31
  377. package/dist/es5/context/context/context-state.js.map +0 -1
  378. package/dist/es5/context/context/create-browser-context.js +0 -83
  379. package/dist/es5/context/context/create-browser-context.js.map +0 -1
  380. package/dist/es5/context/context/create-headless-context.js +0 -60
  381. package/dist/es5/context/context/create-headless-context.js.map +0 -1
  382. package/dist/es5/context/context/device-pixels.js +0 -121
  383. package/dist/es5/context/context/device-pixels.js.map +0 -1
  384. package/dist/es5/context/context/webgl-checks.js +0 -54
  385. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  386. package/dist/es5/context/debug/spector.js +0 -133
  387. package/dist/es5/context/debug/spector.js.map +0 -1
  388. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  389. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  390. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  391. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  392. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  393. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  394. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  395. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  396. package/dist/es5/context/polyfill/polyfill-context.js +0 -134
  397. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  398. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  399. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  400. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  401. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  402. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  403. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  404. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  405. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  406. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  407. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  408. package/dist/es5/index.js +0 -290
  409. package/dist/es5/index.js.map +0 -1
  410. package/dist/es5/init.js +0 -10
  411. package/dist/es5/init.js.map +0 -1
  412. package/dist/es5/types/webgl.js +0 -6
  413. package/dist/es5/types/webgl.js.map +0 -1
  414. package/dist/es5/types.js +0 -2
  415. package/dist/es5/types.js.map +0 -1
  416. package/dist/esm/adapter/converters/device-parameters.js +0 -168
  417. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  418. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  419. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  420. package/dist/esm/adapter/converters/sampler-parameters.js +0 -227
  421. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  422. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  423. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  424. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  425. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  426. package/dist/esm/adapter/device-helpers/device-features.js +0 -112
  427. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  428. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  429. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  430. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  431. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  432. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  433. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  434. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  435. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  436. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -330
  437. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  438. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  439. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  440. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  441. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  442. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  443. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  444. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  445. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  446. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  447. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  448. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  449. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  450. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  451. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  453. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  455. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  457. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  459. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  460. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -267
  461. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  462. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -21
  463. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  464. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -428
  465. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  466. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  467. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  468. package/dist/esm/adapter/resources/webgl-shader.js +0 -76
  469. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  470. package/dist/esm/adapter/resources/webgl-texture.js +0 -834
  471. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  472. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  473. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  474. package/dist/esm/adapter/webgl-device.js +0 -337
  475. package/dist/esm/adapter/webgl-device.js.map +0 -1
  476. package/dist/esm/bundle.js +0 -5
  477. package/dist/esm/bundle.js.map +0 -1
  478. package/dist/esm/classic/accessor.js +0 -144
  479. package/dist/esm/classic/accessor.js.map +0 -1
  480. package/dist/esm/classic/buffer.js +0 -392
  481. package/dist/esm/classic/buffer.js.map +0 -1
  482. package/dist/esm/classic/typed-array-utils.js +0 -112
  483. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  484. package/dist/esm/context/context/context-state.js +0 -26
  485. package/dist/esm/context/context/context-state.js.map +0 -1
  486. package/dist/esm/context/context/create-browser-context.js +0 -61
  487. package/dist/esm/context/context/create-browser-context.js.map +0 -1
  488. package/dist/esm/context/context/create-headless-context.js +0 -43
  489. package/dist/esm/context/context/create-headless-context.js.map +0 -1
  490. package/dist/esm/context/context/device-pixels.js +0 -103
  491. package/dist/esm/context/context/device-pixels.js.map +0 -1
  492. package/dist/esm/context/context/webgl-checks.js +0 -34
  493. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  494. package/dist/esm/context/debug/spector.js +0 -76
  495. package/dist/esm/context/debug/spector.js.map +0 -1
  496. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  497. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  498. package/dist/esm/context/parameters/unified-parameter-api.js +0 -63
  499. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  500. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  501. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  502. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  503. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  504. package/dist/esm/context/polyfill/polyfill-context.js +0 -91
  505. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  506. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  507. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  508. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  509. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  510. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  511. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  512. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  513. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  514. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  515. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  516. package/dist/esm/index.js +0 -28
  517. package/dist/esm/index.js.map +0 -1
  518. package/dist/esm/init.js +0 -4
  519. package/dist/esm/init.js.map +0 -1
  520. package/dist/esm/types/webgl.js +0 -2
  521. package/dist/esm/types/webgl.js.map +0 -1
  522. package/dist/esm/types.js +0 -2
  523. package/dist/esm/types.js.map +0 -1
  524. package/dist/index.js.map +0 -1
  525. package/dist/init.d.ts +0 -2
  526. package/dist/init.d.ts.map +0 -1
  527. package/dist/init.js +0 -4
  528. package/dist/init.js.map +0 -1
  529. package/dist/types/webgl.d.ts +0 -145
  530. package/dist/types/webgl.d.ts.map +0 -1
  531. package/dist/types/webgl.js +0 -2
  532. package/dist/types/webgl.js.map +0 -1
  533. package/dist/types.js.map +0 -1
  534. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  535. package/src/adapter/device-helpers/device-features.ts +0 -158
  536. package/src/adapter/device-helpers/device-limits.ts +0 -153
  537. package/src/adapter/device-helpers/get-device-info.ts +0 -49
  538. package/src/adapter/device-helpers/is-old-ie.ts +0 -11
  539. package/src/adapter/helpers/attribute-utils.ts +0 -61
  540. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  541. package/src/bundle.ts +0 -4
  542. package/src/classic/buffer.ts +0 -474
  543. package/src/context/context/context-state.ts +0 -41
  544. package/src/context/context/create-browser-context.ts +0 -118
  545. package/src/context/context/create-headless-context.ts +0 -48
  546. package/src/context/context/device-pixels.ts +0 -158
  547. package/src/context/context/webgl-checks.ts +0 -49
  548. package/src/context/polyfill/get-parameter-polyfill.ts +0 -118
  549. package/src/context/polyfill/polyfill-context.ts +0 -97
  550. package/src/context/polyfill/polyfill-table.ts +0 -162
  551. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -360
  552. package/src/init.ts +0 -4
  553. package/src/types/webgl.ts +0 -284
@@ -1,4 +1,10 @@
1
- import GL from '@luma.gl/constants';
2
- import { VertexFormat } from '@luma.gl/api';
3
- export declare function getVertexFormat(type: GL, components: number): VertexFormat;
1
+ import { GL } from '@luma.gl/constants';
2
+ import { VertexFormat, VertexType } from '@luma.gl/core';
3
+ type GLDataType = GL.UNSIGNED_BYTE | GL.BYTE | GL.UNSIGNED_SHORT | GL.SHORT | GL.UNSIGNED_INT | GL.INT | GL.HALF_FLOAT | GL.FLOAT;
4
+ /** Get vertex format from GL constants */
5
+ export declare function getVertexFormatFromGL(type: GLDataType, components: 1 | 2 | 3 | 4): VertexFormat;
6
+ /** Get data type from GL constants */
7
+ export declare function getVertexTypeFromGL(type: GLDataType, normalized?: boolean): VertexType;
8
+ export declare function getGLFromVertexType(dataType: VertexType): GL.UNSIGNED_BYTE | GL.BYTE | GL.UNSIGNED_SHORT | GL.SHORT | GL.UNSIGNED_INT | GL.INT | GL.HALF_FLOAT | GL.FLOAT;
9
+ export {};
4
10
  //# sourceMappingURL=vertex-formats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/vertex-formats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAE1C,wBAAgB,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAQ1E"}
1
+ {"version":3,"file":"vertex-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/vertex-formats.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAEvD,KAAK,UAAU,GACX,EAAE,CAAC,aAAa,GAChB,EAAE,CAAC,IAAI,GACP,EAAE,CAAC,cAAc,GACjB,EAAE,CAAC,KAAK,GACR,EAAE,CAAC,YAAY,GACf,EAAE,CAAC,GAAG,GACN,EAAE,CAAC,UAAU,GACb,EAAE,CAAC,KAAK,CAAC;AAEb,0CAA0C;AAC1C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAa/F;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,UAAQ,GAAG,UAAU,CAepF;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,UAAU,GAElB,EAAE,CAAC,aAAa,GAChB,EAAE,CAAC,IAAI,GACP,EAAE,CAAC,cAAc,GACjB,EAAE,CAAC,KAAK,GACR,EAAE,CAAC,YAAY,GACf,EAAE,CAAC,GAAG,GACN,EAAE,CAAC,UAAU,GACb,EAAE,CAAC,KAAK,CAqBX"}
@@ -1,35 +1,58 @@
1
- import GL from '@luma.gl/constants';
2
- export function getVertexFormat(type, components) {
3
- const base = getDataFormat(type);
4
-
5
- switch (components) {
6
- case 1:
7
- return base;
8
-
9
- case 2:
10
- return "".concat(base, "x2");
11
-
12
- case 3:
13
- return "".concat(base, "x3");
14
-
15
- case 4:
16
- return "".concat(base, "x4");
17
- }
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { GL } from '@luma.gl/constants';
5
+ /** Get vertex format from GL constants */
6
+ export function getVertexFormatFromGL(type, components) {
7
+ const base = getVertexTypeFromGL(type);
8
+ // prettier-ignore
9
+ switch (components) {
10
+ // @ts-expect-error TODO deal with lack of formats
11
+ case 1: return base;
12
+ case 2: return `${base}x2`;
13
+ // @ts-expect-error TODO deal with lack of formats
14
+ case 3: return `${base}x3`;
15
+ case 4: return `${base}x4`;
16
+ }
17
+ // @ts-ignore unreachable
18
+ throw new Error(String(components));
18
19
  }
19
-
20
- function getDataFormat(type) {
21
- switch (type) {
22
- case GL.INT:
23
- return 'sint32';
24
-
25
- case GL.UNSIGNED_INT:
26
- return 'uint32';
27
-
28
- case GL.FLOAT:
29
- return 'float32';
30
-
31
- default:
32
- throw new Error(String(type));
33
- }
20
+ /** Get data type from GL constants */
21
+ export function getVertexTypeFromGL(type, normalized = false) {
22
+ // prettier-ignore
23
+ switch (type) {
24
+ // WebGPU does not support normalized 32 bit integer attributes
25
+ case 5124: return normalized ? 'sint32' : 'sint32';
26
+ case 5125: return normalized ? 'uint32' : 'uint32';
27
+ case 5122: return normalized ? 'sint16' : 'unorm16';
28
+ case 5123: return normalized ? 'uint16' : 'unorm16';
29
+ case 5120: return normalized ? 'sint8' : 'snorm16';
30
+ case 5121: return normalized ? 'uint8' : 'unorm8';
31
+ case 5126: return 'float32';
32
+ case 5131: return 'float16';
33
+ }
34
+ // @ts-ignore unreachable
35
+ throw new Error(String(type));
36
+ }
37
+ export function getGLFromVertexType(dataType) {
38
+ // prettier-ignore
39
+ switch (dataType) {
40
+ case 'uint8': return 5121;
41
+ case 'sint8': return 5120;
42
+ case 'unorm8': return 5121;
43
+ case 'snorm8': return 5120;
44
+ case 'uint16': return 5123;
45
+ case 'sint16': return 5122;
46
+ case 'unorm16': return 5123;
47
+ case 'snorm16': return 5122;
48
+ case 'uint32': return 5125;
49
+ case 'sint32': return 5124;
50
+ // WebGPU does not support normalized 32 bit integer attributes
51
+ // case 'unorm32': return GL.UNSIGNED_INT;
52
+ // case 'snorm32': return GL.INT;
53
+ case 'float16': return 5131;
54
+ case 'float32': return 5126;
55
+ }
56
+ // @ts-ignore unreachable
57
+ throw new Error(String(dataType));
34
58
  }
35
- //# sourceMappingURL=vertex-formats.js.map
@@ -0,0 +1,20 @@
1
+ import { DeviceFeature, DeviceFeatures } from '@luma.gl/core';
2
+ import { GLExtensions } from '@luma.gl/constants';
3
+ /**
4
+ * WebGL extensions exposed as luma.gl features
5
+ * To minimize GL log noise and improve performance, this class ensures that
6
+ * - WebGL extensions are not queried until the corresponding feature is checked.
7
+ * - WebGL extensions are only queried once.
8
+ */
9
+ export declare class WebGLDeviceFeatures extends DeviceFeatures {
10
+ protected gl: WebGL2RenderingContext;
11
+ protected extensions: GLExtensions;
12
+ protected testedFeatures: Set<DeviceFeature>;
13
+ constructor(gl: WebGL2RenderingContext, extensions: GLExtensions, disabledFeatures: Partial<Record<DeviceFeature, boolean>>);
14
+ [Symbol.iterator](): IterableIterator<DeviceFeature>;
15
+ has(feature: DeviceFeature): boolean;
16
+ initializeFeatures(): void;
17
+ /** Extract all WebGL features */
18
+ protected getWebGLFeature(feature: DeviceFeature): boolean;
19
+ }
20
+ //# sourceMappingURL=webgl-device-features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-device-features.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/webgl-device-features.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AA8BhD;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,SAAS,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACrC,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC;IACnC,SAAS,CAAC,cAAc,qBAA4B;gBAGlD,EAAE,EAAE,sBAAsB,EAC1B,UAAU,EAAE,YAAY,EACxB,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAU1D,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,aAAa,CAAC;IAc5C,GAAG,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAuB7C,kBAAkB;IAUlB,iCAAiC;IACjC,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;CAU3D"}
@@ -0,0 +1,98 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // Feature detection for WebGL
5
+ // Provides a function that enables simple checking of which WebGL features are
6
+ import { DeviceFeatures } from '@luma.gl/core';
7
+ import { getWebGLExtension } from "../../context/helpers/webgl-extensions.js";
8
+ import { isTextureFeature, checkTextureFeature } from "../converters/texture-formats.js";
9
+ import { TEXTURE_FEATURES } from "../converters/texture-formats.js";
10
+ /**
11
+ * Defines luma.gl "feature" names and semantics
12
+ * when value is 'string' it is the name of the extension that enables this feature
13
+ */
14
+ const WEBGL_FEATURES = {
15
+ // optional WebGPU features
16
+ 'depth-clip-control': 'EXT_depth_clamp', // TODO these seem subtly different
17
+ // 'timestamp-query' // GPUQueryType "timestamp-query"
18
+ // "indirect-first-instance"
19
+ // Textures are handled by getTextureFeatures()
20
+ // 'depth24unorm-stencil8' // GPUTextureFormat 'depth24unorm-stencil8'
21
+ // 'depth32float-stencil8' // GPUTextureFormat 'depth32float-stencil8'
22
+ // optional WebGL features
23
+ 'timer-query-webgl': 'EXT_disjoint_timer_query_webgl2',
24
+ 'compilation-status-async-webgl': 'KHR_parallel_shader_compile',
25
+ 'polygon-mode-webgl': 'WEBGL_polygon_mode',
26
+ 'provoking-vertex-webgl': 'WEBGL_provoking_vertex',
27
+ 'shader-clip-cull-distance-webgl': 'WEBGL_clip_cull_distance',
28
+ 'shader-noperspective-interpolation-webgl': 'NV_shader_noperspective_interpolation',
29
+ 'shader-conservative-depth-webgl': 'EXT_conservative_depth'
30
+ // Textures are handled by getTextureFeatures()
31
+ };
32
+ /**
33
+ * WebGL extensions exposed as luma.gl features
34
+ * To minimize GL log noise and improve performance, this class ensures that
35
+ * - WebGL extensions are not queried until the corresponding feature is checked.
36
+ * - WebGL extensions are only queried once.
37
+ */
38
+ export class WebGLDeviceFeatures extends DeviceFeatures {
39
+ gl;
40
+ extensions;
41
+ testedFeatures = new Set();
42
+ constructor(gl, extensions, disabledFeatures) {
43
+ super([], disabledFeatures);
44
+ this.gl = gl;
45
+ this.extensions = extensions;
46
+ // TODO - is this really needed?
47
+ // Enable EXT_float_blend first: https://developer.mozilla.org/en-US/docs/Web/API/EXT_float_blend
48
+ getWebGLExtension(gl, 'EXT_color_buffer_float', extensions);
49
+ }
50
+ *[Symbol.iterator]() {
51
+ for (const feature of Object.keys(WEBGL_FEATURES)) {
52
+ if (this.has(feature)) {
53
+ yield feature;
54
+ }
55
+ }
56
+ for (const feature of Object.keys(TEXTURE_FEATURES)) {
57
+ if (this.has(feature)) {
58
+ yield feature;
59
+ }
60
+ }
61
+ return [];
62
+ }
63
+ has(feature) {
64
+ if (this.disabledFeatures[feature]) {
65
+ return false;
66
+ }
67
+ // We have already tested this feature
68
+ if (!this.testedFeatures.has(feature)) {
69
+ this.testedFeatures.add(feature);
70
+ // Check the feature once
71
+ if (isTextureFeature(feature) && checkTextureFeature(this.gl, feature, this.extensions)) {
72
+ this.features.add(feature);
73
+ }
74
+ if (this.getWebGLFeature(feature)) {
75
+ this.features.add(feature);
76
+ }
77
+ }
78
+ return this.features.has(feature);
79
+ }
80
+ // FOR DEVICE
81
+ initializeFeatures() {
82
+ // @ts-expect-error
83
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
84
+ for (const feature of this) {
85
+ // WebGL extensions are initialized by requesting them
86
+ }
87
+ }
88
+ // IMPLEMENTATION
89
+ /** Extract all WebGL features */
90
+ getWebGLFeature(feature) {
91
+ const featureInfo = WEBGL_FEATURES[feature];
92
+ // string value requires checking the corresponding WebGL extension
93
+ const isSupported = typeof featureInfo === 'string'
94
+ ? Boolean(getWebGLExtension(this.gl, featureInfo, this.extensions))
95
+ : Boolean(featureInfo);
96
+ return isSupported;
97
+ }
98
+ }
@@ -0,0 +1,5 @@
1
+ import { DeviceInfo } from '@luma.gl/core';
2
+ import { GLExtensions } from '@luma.gl/constants';
3
+ /** @returns strings identifying the GPU vendor and driver. */
4
+ export declare function getDeviceInfo(gl: WebGL2RenderingContext, extensions: GLExtensions): DeviceInfo;
5
+ //# sourceMappingURL=webgl-device-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-device-info.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/webgl-device-info.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAK,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAGpD,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,EAAE,EAAE,sBAAsB,EAAE,UAAU,EAAE,YAAY,GAAG,UAAU,CAwC9F"}
@@ -0,0 +1,90 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { GL } from '@luma.gl/constants';
5
+ import { getWebGLExtension } from "../../context/helpers/webgl-extensions.js";
6
+ /** @returns strings identifying the GPU vendor and driver. */
7
+ export function getDeviceInfo(gl, extensions) {
8
+ // "Masked" info is always available, but don't contain much useful information
9
+ const vendorMasked = gl.getParameter(7936);
10
+ const rendererMasked = gl.getParameter(7937);
11
+ // If we are lucky, unmasked info is available
12
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/
13
+ getWebGLExtension(gl, 'WEBGL_debug_renderer_info', extensions);
14
+ const ext = extensions.WEBGL_debug_renderer_info;
15
+ const vendorUnmasked = gl.getParameter(ext ? ext.UNMASKED_VENDOR_WEBGL : 7936);
16
+ const rendererUnmasked = gl.getParameter(ext ? ext.UNMASKED_RENDERER_WEBGL : 7937);
17
+ const vendor = vendorUnmasked || vendorMasked;
18
+ const renderer = rendererUnmasked || rendererMasked;
19
+ // Driver version
20
+ const version = gl.getParameter(7938);
21
+ // "Sniff" the GPU type and backend from the info. This works best if unmasked info is available.
22
+ const gpu = identifyGPUVendor(vendor, renderer);
23
+ const gpuBackend = identifyGPUBackend(vendor, renderer);
24
+ const gpuType = identifyGPUType(vendor, renderer);
25
+ // Determine GLSL version
26
+ // For now, skip parsing of the long version string, just use context type below to deduce version
27
+ // const version = gl.getParameter(GL.SHADING_LANGUAGE_VERSION) as string;
28
+ // const shadingLanguageVersion = parseGLSLVersion(version);
29
+ const shadingLanguage = 'glsl';
30
+ const shadingLanguageVersion = 300;
31
+ return {
32
+ type: 'webgl',
33
+ gpu,
34
+ gpuType,
35
+ gpuBackend,
36
+ vendor,
37
+ renderer,
38
+ version,
39
+ shadingLanguage,
40
+ shadingLanguageVersion
41
+ };
42
+ }
43
+ /** "Sniff" the GPU type from the info. This works best if unmasked info is available. */
44
+ function identifyGPUVendor(vendor, renderer) {
45
+ if (/NVIDIA/i.exec(vendor) || /NVIDIA/i.exec(renderer)) {
46
+ return 'nvidia';
47
+ }
48
+ if (/INTEL/i.exec(vendor) || /INTEL/i.exec(renderer)) {
49
+ return 'intel';
50
+ }
51
+ if (/Apple/i.exec(vendor) || /Apple/i.exec(renderer)) {
52
+ return 'apple';
53
+ }
54
+ if (/AMD/i.exec(vendor) ||
55
+ /AMD/i.exec(renderer) ||
56
+ /ATI/i.exec(vendor) ||
57
+ /ATI/i.exec(renderer)) {
58
+ return 'amd';
59
+ }
60
+ if (/SwiftShader/i.exec(vendor) || /SwiftShader/i.exec(renderer)) {
61
+ return 'software';
62
+ }
63
+ return 'unknown';
64
+ }
65
+ /** "Sniff" the GPU backend from the info. This works best if unmasked info is available. */
66
+ function identifyGPUBackend(vendor, renderer) {
67
+ if (/Metal/i.exec(vendor) || /Metal/i.exec(renderer)) {
68
+ return 'metal';
69
+ }
70
+ if (/ANGLE/i.exec(vendor) || /ANGLE/i.exec(renderer)) {
71
+ return 'opengl';
72
+ }
73
+ return 'unknown';
74
+ }
75
+ function identifyGPUType(vendor, renderer) {
76
+ if (/SwiftShader/i.exec(vendor) || /SwiftShader/i.exec(renderer)) {
77
+ return 'cpu';
78
+ }
79
+ const gpuVendor = identifyGPUVendor(vendor, renderer);
80
+ switch (gpuVendor) {
81
+ case 'intel':
82
+ return 'integrated';
83
+ case 'software':
84
+ return 'cpu';
85
+ case 'unknown':
86
+ return 'unknown';
87
+ default:
88
+ return 'discrete';
89
+ }
90
+ }
@@ -0,0 +1,35 @@
1
+ import { DeviceLimits } from '@luma.gl/core';
2
+ import { GL } from '@luma.gl/constants';
3
+ export declare class WebGLDeviceLimits extends DeviceLimits {
4
+ get maxTextureDimension1D(): number;
5
+ get maxTextureDimension2D(): number;
6
+ get maxTextureDimension3D(): number;
7
+ get maxTextureArrayLayers(): number;
8
+ get maxBindGroups(): number;
9
+ get maxDynamicUniformBuffersPerPipelineLayout(): number;
10
+ get maxDynamicStorageBuffersPerPipelineLayout(): number;
11
+ get maxSampledTexturesPerShaderStage(): number;
12
+ get maxSamplersPerShaderStage(): number;
13
+ get maxStorageBuffersPerShaderStage(): number;
14
+ get maxStorageTexturesPerShaderStage(): number;
15
+ get maxUniformBuffersPerShaderStage(): number;
16
+ get maxUniformBufferBindingSize(): number;
17
+ get maxStorageBufferBindingSize(): number;
18
+ get minUniformBufferOffsetAlignment(): number;
19
+ get minStorageBufferOffsetAlignment(): number;
20
+ get maxVertexBuffers(): number;
21
+ get maxVertexAttributes(): number;
22
+ get maxVertexBufferArrayStride(): number;
23
+ get maxInterStageShaderComponents(): number;
24
+ get maxComputeWorkgroupStorageSize(): number;
25
+ get maxComputeInvocationsPerWorkgroup(): number;
26
+ get maxComputeWorkgroupSizeX(): number;
27
+ get maxComputeWorkgroupSizeY(): number;
28
+ get maxComputeWorkgroupSizeZ(): number;
29
+ get maxComputeWorkgroupsPerDimension(): number;
30
+ protected gl: WebGL2RenderingContext;
31
+ protected limits: Partial<Record<GL, number>>;
32
+ constructor(gl: WebGL2RenderingContext);
33
+ protected getParameter(parameter: GL): number;
34
+ }
35
+ //# sourceMappingURL=webgl-device-limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-device-limits.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/webgl-device-limits.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AAGtC,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,IAAI,qBAAqB,WAAgB;IACzC,IAAI,qBAAqB,WAAqD;IAC9E,IAAI,qBAAqB,WAAwD;IACjF,IAAI,qBAAqB,WAA6D;IACtF,IAAI,aAAa,WAAgB;IACjC,IAAI,yCAAyC,WAAgB;IAC7D,IAAI,yCAAyC,WAAgB;IAC7D,IAAI,gCAAgC,WAAmE;IACvG,IAAI,yBAAyB,WAAqE;IAClG,IAAI,+BAA+B,WAAgB;IACnD,IAAI,gCAAgC,WAAgB;IACpD,IAAI,+BAA+B,WAAgE;IACnG,IAAI,2BAA2B,WAA2D;IAC1F,IAAI,2BAA2B,WAAgB;IAC/C,IAAI,+BAA+B,WAAoE;IACvG,IAAI,+BAA+B,WAAgB;IACnD,IAAI,gBAAgB,WAAiB;IACrC,IAAI,mBAAmB,WAAuD;IAC9E,IAAI,0BAA0B,WAAmB;IACjD,IAAI,6BAA6B,WAA2D;IAC5F,IAAI,8BAA8B,WAAgB;IAClD,IAAI,iCAAiC,WAAgB;IACrD,IAAI,wBAAwB,WAAgB;IAC5C,IAAI,wBAAwB,WAAgB;IAC5C,IAAI,wBAAwB,WAAgB;IAC5C,IAAI,gCAAgC,WAAe;IAInD,SAAS,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAM;gBAEvC,EAAE,EAAE,sBAAsB;IAKtC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,GAAG,MAAM;CAM9C"}
@@ -0,0 +1,47 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { DeviceLimits } from '@luma.gl/core';
5
+ import { GL } from '@luma.gl/constants';
6
+ // prettier-ignore
7
+ export class WebGLDeviceLimits extends DeviceLimits {
8
+ get maxTextureDimension1D() { return 0; } // WebGL does not support 1D textures
9
+ get maxTextureDimension2D() { return this.getParameter(3379); }
10
+ get maxTextureDimension3D() { return this.getParameter(32883); }
11
+ get maxTextureArrayLayers() { return this.getParameter(35071); }
12
+ get maxBindGroups() { return 0; }
13
+ get maxDynamicUniformBuffersPerPipelineLayout() { return 0; } // TBD
14
+ get maxDynamicStorageBuffersPerPipelineLayout() { return 0; } // TBD
15
+ get maxSampledTexturesPerShaderStage() { return this.getParameter(35660); } // ) TBD
16
+ get maxSamplersPerShaderStage() { return this.getParameter(35661); }
17
+ get maxStorageBuffersPerShaderStage() { return 0; } // TBD
18
+ get maxStorageTexturesPerShaderStage() { return 0; } // TBD
19
+ get maxUniformBuffersPerShaderStage() { return this.getParameter(35375); }
20
+ get maxUniformBufferBindingSize() { return this.getParameter(35376); }
21
+ get maxStorageBufferBindingSize() { return 0; }
22
+ get minUniformBufferOffsetAlignment() { return this.getParameter(35380); }
23
+ get minStorageBufferOffsetAlignment() { return 0; }
24
+ get maxVertexBuffers() { return 16; } // WebGL 2 supports 16 buffers, see https://github.com/gpuweb/gpuweb/issues/4284
25
+ get maxVertexAttributes() { return this.getParameter(34921); }
26
+ get maxVertexBufferArrayStride() { return 2048; } // TBD, this is just the default value from WebGPU
27
+ get maxInterStageShaderComponents() { return this.getParameter(35659); }
28
+ get maxComputeWorkgroupStorageSize() { return 0; } // WebGL does not support compute shaders
29
+ get maxComputeInvocationsPerWorkgroup() { return 0; } // WebGL does not support compute shaders
30
+ get maxComputeWorkgroupSizeX() { return 0; } // WebGL does not support compute shaders
31
+ get maxComputeWorkgroupSizeY() { return 0; } // WebGL does not support compute shaders
32
+ get maxComputeWorkgroupSizeZ() { return 0; } // WebGL does not support compute shaders
33
+ get maxComputeWorkgroupsPerDimension() { return 0; } // WebGL does not support compute shaders
34
+ // PRIVATE
35
+ gl;
36
+ limits = {};
37
+ constructor(gl) {
38
+ super();
39
+ this.gl = gl;
40
+ }
41
+ getParameter(parameter) {
42
+ if (this.limits[parameter] === undefined) {
43
+ this.limits[parameter] = this.gl.getParameter(parameter);
44
+ }
45
+ return this.limits[parameter];
46
+ }
47
+ }
@@ -0,0 +1,26 @@
1
+ import { ShaderUniformType, ShaderAttributeType, VertexFormat } from '@luma.gl/core';
2
+ import { GL, GLUniformType, GLCompositeType, GLDataType } from '@luma.gl/constants';
3
+ /** Check is uniform is of sampler type */
4
+ export declare function isSamplerUniform(type: GLUniformType): boolean;
5
+ /** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
6
+ export declare function decodeGLUniformType(glUniformType: GL): {
7
+ format: ShaderUniformType;
8
+ components: number;
9
+ glType: GLDataType;
10
+ };
11
+ /** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
12
+ export declare function decodeGLAttributeType(glAttributeType: GL): {
13
+ attributeType: ShaderAttributeType;
14
+ vertexFormat: VertexFormat;
15
+ components: number;
16
+ };
17
+ /** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
18
+ export declare function decomposeCompositeGLDataType(compositeGLDataType: GLCompositeType): {
19
+ type: GLDataType;
20
+ components: number;
21
+ } | null;
22
+ export declare function getCompositeGLDataType(type: GL, components: any): {
23
+ glType: GLDataType;
24
+ name: string;
25
+ } | null;
26
+ //# sourceMappingURL=decode-webgl-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-webgl-types.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/decode-webgl-types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACnF,OAAO,EAAC,EAAE,EAAE,aAAa,EAAiB,eAAe,EAAE,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAEjG,0CAA0C;AAC1C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAE7D;AA2DD,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,EAAE,GAAG;IACtD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACpB,CAOA;AAED,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,EAAE,GAAG;IAC1D,aAAa,EAAE,mBAAmB,CAAC;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CAEpB,CASA;AAED,0FAA0F;AAC1F,wBAAgB,4BAA4B,CAC1C,mBAAmB,EAAE,eAAe,GACnC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAO/C;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,EAAE,EACR,UAAU,KAAA,GACT;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAkB3C"}
@@ -0,0 +1,101 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { GL } from '@luma.gl/constants';
5
+ /** Check is uniform is of sampler type */
6
+ export function isSamplerUniform(type) {
7
+ return SAMPLER_TYPES.includes(type);
8
+ }
9
+ const SAMPLER_TYPES = [
10
+ 35678,
11
+ 35680,
12
+ 35679,
13
+ 35682,
14
+ 36289,
15
+ 36292,
16
+ 36293,
17
+ 36298,
18
+ 36299,
19
+ 36300,
20
+ 36303,
21
+ 36306,
22
+ 36307,
23
+ 36308,
24
+ 36311
25
+ ];
26
+ // Composite types table
27
+ const COMPOSITE_GL_TYPES = {
28
+ [5126]: [5126, 1, 'float', 'f32', 'float32'],
29
+ [35664]: [5126, 2, 'vec2', 'vec2<f32>', 'float32x2'],
30
+ [35665]: [5126, 3, 'vec3', 'vec3<f32>', 'float32x3'],
31
+ [35666]: [5126, 4, 'vec4', 'vec4<f32>', 'float32x4'],
32
+ [5124]: [5124, 1, 'int', 'i32', 'sint32'],
33
+ [35667]: [5124, 2, 'ivec2', 'vec2<i32>', 'sint32x2'],
34
+ [35668]: [5124, 3, 'ivec3', 'vec3<i32>', 'sint32x3'],
35
+ [35669]: [5124, 4, 'ivec4', 'vec4<i32>', 'sint32x4'],
36
+ [5125]: [5125, 1, 'uint', 'u32', 'uint32'],
37
+ [36294]: [5125, 2, 'uvec2', 'vec2<u32>', 'uint32x2'],
38
+ [36295]: [5125, 3, 'uvec3', 'vec3<u32>', 'uint32x3'],
39
+ [36296]: [5125, 4, 'uvec4', 'vec4<u32>', 'uint32x4'],
40
+ [35670]: [5126, 1, 'bool', 'f32', 'float32'],
41
+ [35671]: [5126, 2, 'bvec2', 'vec2<f32>', 'float32x2'],
42
+ [35672]: [5126, 3, 'bvec3', 'vec3<f32>', 'float32x3'],
43
+ [35673]: [5126, 4, 'bvec4', 'vec4<f32>', 'float32x4'],
44
+ // TODO - are sizes/components below correct?
45
+ [35674]: [5126, 8, 'mat2', 'mat2x2<f32>'], // 4
46
+ [35685]: [5126, 8, 'mat2x3', 'mat2x3<f32>'], // 6
47
+ [35686]: [5126, 8, 'mat2x4', 'mat2x4<f32>'], // 8
48
+ [35687]: [5126, 12, 'mat3x2', 'mat3x2<f32>'], // 6
49
+ [35675]: [5126, 12, 'mat3', 'mat3x3<f32>'], // 9
50
+ [35688]: [5126, 12, 'mat3x4', 'mat3x4<f32>'], // 12
51
+ [35689]: [5126, 16, 'mat4x2', 'mat4x2<f32>'], // 8
52
+ [35690]: [5126, 16, 'mat4x3', 'mat4x3<f32>'], // 12
53
+ [35676]: [5126, 16, 'mat4', 'mat4x4<f32>'] // 16
54
+ };
55
+ /** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
56
+ export function decodeGLUniformType(glUniformType) {
57
+ const typeAndSize = COMPOSITE_GL_TYPES[glUniformType];
58
+ if (!typeAndSize) {
59
+ throw new Error('uniform');
60
+ }
61
+ const [glType, components, , format] = typeAndSize;
62
+ return { format, components, glType };
63
+ }
64
+ /** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
65
+ export function decodeGLAttributeType(glAttributeType) {
66
+ const typeAndSize = COMPOSITE_GL_TYPES[glAttributeType];
67
+ if (!typeAndSize) {
68
+ throw new Error('attribute');
69
+ }
70
+ const [, components, , shaderType, vertexFormat] = typeAndSize;
71
+ // TODO sanity - if (shaderType.startsWith('mat' ...))
72
+ const attributeType = shaderType;
73
+ return { attributeType, vertexFormat, components }; // , glType};
74
+ }
75
+ /** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
76
+ export function decomposeCompositeGLDataType(compositeGLDataType) {
77
+ const typeAndSize = COMPOSITE_GL_TYPES[compositeGLDataType];
78
+ if (!typeAndSize) {
79
+ return null;
80
+ }
81
+ const [type, components] = typeAndSize;
82
+ return { type, components };
83
+ }
84
+ export function getCompositeGLDataType(type, components) {
85
+ switch (type) {
86
+ case 5120:
87
+ case 5121:
88
+ case 5122:
89
+ case 5123:
90
+ type = 5126;
91
+ break;
92
+ default:
93
+ }
94
+ for (const glType in COMPOSITE_GL_TYPES) {
95
+ const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];
96
+ if (compType === type && compComponents === components) {
97
+ return { glType: Number(glType), name };
98
+ }
99
+ }
100
+ return null;
101
+ }
@@ -1,55 +1,8 @@
1
- import { ShaderLayout, ProgramBindings } from '@luma.gl/api';
1
+ import type { ShaderLayout } from '@luma.gl/core';
2
2
  /**
3
3
  * Extract metadata describing binding information for a program's shaders
4
4
  * Note: `linkProgram()` needs to have been called
5
5
  * (although linking does not need to have been successful).
6
6
  */
7
- export declare function getShaderLayout(gl: WebGLRenderingContext, program: WebGLProgram): ShaderLayout;
8
- /**
9
- * Extract metadata describing binding information for a program's shaders
10
- * Note: `linkProgram()` needs to have been called
11
- * (although linking does not need to have been successful).
12
- */
13
- export declare function getProgramBindings(gl: WebGLRenderingContext, program: WebGLProgram): ProgramBindings;
14
- /**
15
- * TODO - verify this is a copy of above and delete
16
- * import type {TextureFormat} from '@luma.gl/api';
17
- * Extract info about all "active" uniform blocks
18
- * ("Active" just means that unused (inactive) blocks may have been optimized away during linking)
19
- *
20
- function getUniformBlockBindings(gl, program): Binding[] {
21
- if (!isWebGL2(gl)) {
22
- return;
23
- }
24
- const bindings: Binding[] = [];
25
- const count = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
26
- for (let blockIndex = 0; blockIndex < count; blockIndex++) {
27
- const vertex = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
28
- const fragment = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
29
- const visibility = (vertex) + (fragment);
30
- const binding: BufferBinding = {
31
- location: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_BINDING),
32
- // name: gl.getActiveUniformBlockName(program, blockIndex),
33
- type: 'uniform',
34
- visibility,
35
- minBindingSize: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
36
- // uniformCount: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
37
- // uniformIndices: gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
38
- }
39
- bindings.push(binding);
40
- }
41
- return bindings;
42
- }
43
-
44
- function setBindings(gl2: WebGL2RenderingContext, program: WebGLProgram, bindings: Binding[][]): void {
45
- for (const bindGroup of bindings) {
46
- for (const binding of bindGroup) {
47
-
48
- }
49
- }
50
-
51
- // Set up indirection table
52
- // this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);
53
- }
54
- */
7
+ export declare function getShaderLayout(gl: WebGL2RenderingContext, program: WebGLProgram): ShaderLayout;
55
8
  //# sourceMappingURL=get-shader-layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-shader-layout.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/get-shader-layout.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EAIZ,eAAe,EAKhB,MAAM,cAAc,CAAC;AAOtB;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY,CAkE9F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,YAAY,GACpB,eAAe,CAWjB;AA+PD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG"}
1
+ {"version":3,"file":"get-shader-layout.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/get-shader-layout.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,eAAe,CAAC;AAMvB;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,sBAAsB,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY,CA2D/F"}