@luma.gl/webgl 9.0.0-beta.1 → 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 (285) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +295 -156
  3. package/dist/adapter/converters/sampler-parameters.d.ts +0 -4
  4. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.js +73 -67
  6. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/shader-formats.js +53 -46
  8. package/dist/adapter/converters/texture-formats.d.ts +17 -21
  9. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  10. package/dist/adapter/converters/texture-formats.js +481 -879
  11. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  12. package/dist/adapter/converters/vertex-formats.js +53 -61
  13. package/dist/adapter/device-helpers/webgl-device-features.d.ts +20 -0
  14. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  15. package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
  16. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  17. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  18. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  19. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  20. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  21. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  22. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
  23. package/dist/adapter/helpers/decode-webgl-types.js +88 -76
  24. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  25. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  26. package/dist/adapter/helpers/get-shader-layout.js +261 -225
  27. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  28. package/dist/adapter/helpers/parse-shader-compiler-log.js +47 -37
  29. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  30. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  31. package/dist/adapter/helpers/set-uniform.js +68 -82
  32. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  33. package/dist/adapter/helpers/webgl-topology-utils.js +78 -93
  34. package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
  35. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  36. package/dist/adapter/objects/constants-to-keys.js +19 -12
  37. package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
  38. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  39. package/dist/adapter/objects/webgl-renderbuffer.js +86 -77
  40. package/dist/adapter/objects/webgl-resource.d.ts +3 -25
  41. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  42. package/dist/adapter/objects/webgl-resource.js +102 -147
  43. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  44. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgl-buffer.js +159 -117
  46. package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
  47. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  48. package/dist/adapter/resources/webgl-command-buffer.js +266 -168
  49. package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
  50. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-command-encoder.js +33 -39
  52. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  53. package/dist/adapter/resources/webgl-framebuffer.d.ts +8 -12
  54. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-framebuffer.js +174 -139
  56. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  57. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  58. package/dist/adapter/resources/webgl-query-set.js +136 -0
  59. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
  60. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgl-render-pass.js +124 -90
  62. package/dist/adapter/resources/webgl-render-pipeline.d.ts +15 -6
  63. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgl-render-pipeline.js +362 -221
  65. package/dist/adapter/resources/webgl-sampler.d.ts +1 -3
  66. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  67. package/dist/adapter/resources/webgl-sampler.js +43 -33
  68. package/dist/adapter/resources/webgl-shader.d.ts +12 -2
  69. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-shader.js +114 -47
  71. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  72. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  73. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  74. package/dist/adapter/resources/webgl-texture.d.ts +8 -10
  75. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  76. package/dist/adapter/resources/webgl-texture.js +616 -694
  77. package/dist/adapter/resources/webgl-transform-feedback.d.ts +2 -2
  78. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-transform-feedback.js +141 -143
  80. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
  81. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-vertex-array.js +229 -157
  83. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  84. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  85. package/dist/adapter/webgl-canvas-context.js +58 -36
  86. package/dist/adapter/webgl-device.d.ts +50 -44
  87. package/dist/adapter/webgl-device.d.ts.map +1 -1
  88. package/dist/adapter/webgl-device.js +427 -352
  89. package/dist/classic/accessor.d.ts.map +1 -1
  90. package/dist/classic/accessor.js +132 -101
  91. package/dist/classic/clear.d.ts +2 -2
  92. package/dist/classic/clear.d.ts.map +1 -1
  93. package/dist/classic/clear.js +73 -72
  94. package/dist/classic/copy-and-blit.d.ts +1 -1
  95. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  96. package/dist/classic/copy-and-blit.js +174 -175
  97. package/dist/classic/format-utils.d.ts +2 -2
  98. package/dist/classic/format-utils.d.ts.map +1 -1
  99. package/dist/classic/format-utils.js +39 -32
  100. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  101. package/dist/classic/typed-array-utils.js +96 -81
  102. package/dist/context/debug/spector.d.ts.map +1 -1
  103. package/dist/context/debug/spector.js +55 -50
  104. package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
  105. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  106. package/dist/context/debug/webgl-developer-tools.js +104 -77
  107. package/dist/context/{context → helpers}/create-browser-context.d.ts +1 -6
  108. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  109. package/dist/context/helpers/create-browser-context.js +67 -0
  110. package/dist/context/{polyfill/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -2
  111. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  112. package/dist/context/helpers/webgl-context-data.js +21 -0
  113. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  114. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  115. package/dist/context/helpers/webgl-extensions.js +10 -0
  116. package/dist/context/parameters/unified-parameter-api.d.ts +3 -4
  117. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  118. package/dist/context/parameters/unified-parameter-api.js +92 -47
  119. package/dist/context/parameters/webgl-parameter-tables.d.ts +109 -99
  120. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  121. package/dist/context/parameters/webgl-parameter-tables.js +463 -404
  122. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  123. package/dist/context/state-tracker/deep-array-equal.js +19 -14
  124. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  125. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  126. package/dist/context/state-tracker/track-context-state.js +188 -123
  127. package/dist/context/state-tracker/with-parameters.d.ts +2 -3
  128. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  129. package/dist/context/state-tracker/with-parameters.js +42 -28
  130. package/dist/dist.dev.js +4465 -7235
  131. package/dist/dist.min.js +10 -0
  132. package/dist/index.cjs +2146 -3116
  133. package/dist/index.cjs.map +7 -0
  134. package/dist/index.d.ts +25 -31
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +19 -10
  137. package/dist/types.d.ts.map +1 -1
  138. package/dist/types.js +3 -1
  139. package/dist.min.js +9 -42
  140. package/package.json +10 -15
  141. package/src/adapter/converters/device-parameters.ts +114 -28
  142. package/src/adapter/converters/sampler-parameters.ts +12 -20
  143. package/src/adapter/converters/shader-formats.ts +47 -22
  144. package/src/adapter/converters/texture-formats.ts +183 -227
  145. package/src/adapter/converters/vertex-formats.ts +3 -3
  146. package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
  147. package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +30 -22
  148. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  149. package/src/adapter/helpers/decode-webgl-types.ts +13 -7
  150. package/src/adapter/helpers/get-shader-layout.ts +21 -31
  151. package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
  152. package/src/adapter/helpers/set-uniform.ts +3 -4
  153. package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
  154. package/src/adapter/objects/constants-to-keys.ts +3 -2
  155. package/src/adapter/objects/webgl-renderbuffer.ts +38 -16
  156. package/src/adapter/objects/webgl-resource.ts +8 -141
  157. package/src/adapter/resources/webgl-buffer.ts +10 -14
  158. package/src/adapter/resources/webgl-command-buffer.ts +24 -34
  159. package/src/adapter/resources/webgl-command-encoder.ts +14 -11
  160. package/src/adapter/resources/webgl-external-texture.ts +7 -7
  161. package/src/adapter/resources/webgl-framebuffer.ts +65 -58
  162. package/src/adapter/resources/webgl-query-set.ts +171 -0
  163. package/src/adapter/resources/webgl-render-pass.ts +27 -18
  164. package/src/adapter/resources/webgl-render-pipeline.ts +148 -73
  165. package/src/adapter/resources/webgl-sampler.ts +7 -10
  166. package/src/adapter/resources/webgl-shader.ts +65 -11
  167. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  168. package/src/adapter/resources/webgl-texture.ts +43 -106
  169. package/src/adapter/resources/webgl-transform-feedback.ts +16 -22
  170. package/src/adapter/resources/webgl-vertex-array.ts +20 -21
  171. package/src/adapter/webgl-canvas-context.ts +7 -11
  172. package/src/adapter/webgl-device.ts +142 -162
  173. package/src/classic/accessor.ts +5 -4
  174. package/src/classic/clear.ts +25 -20
  175. package/src/classic/copy-and-blit.ts +12 -6
  176. package/src/classic/format-utils.ts +2 -1
  177. package/src/classic/typed-array-utils.ts +3 -7
  178. package/src/context/debug/spector.ts +9 -6
  179. package/src/context/debug/webgl-developer-tools.ts +31 -20
  180. package/src/context/{context → helpers}/create-browser-context.ts +9 -33
  181. package/src/context/{polyfill/context-data.ts → helpers/webgl-context-data.ts} +3 -2
  182. package/src/context/helpers/webgl-extensions.ts +17 -0
  183. package/src/context/parameters/unified-parameter-api.ts +6 -17
  184. package/src/context/parameters/webgl-parameter-tables.ts +118 -90
  185. package/src/context/state-tracker/deep-array-equal.ts +2 -1
  186. package/src/context/state-tracker/track-context-state.ts +29 -23
  187. package/src/context/state-tracker/with-parameters.ts +8 -8
  188. package/src/index.ts +16 -56
  189. package/src/types.ts +2 -1
  190. package/dist/adapter/converters/device-parameters.js.map +0 -1
  191. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  192. package/dist/adapter/converters/shader-formats.js.map +0 -1
  193. package/dist/adapter/converters/texture-formats.js.map +0 -1
  194. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  195. package/dist/adapter/device-helpers/device-features.d.ts +0 -9
  196. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  197. package/dist/adapter/device-helpers/device-features.js +0 -96
  198. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  199. package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
  200. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  201. package/dist/adapter/device-helpers/device-limits.js +0 -87
  202. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  203. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  204. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  205. package/dist/adapter/device-helpers/get-device-info.js +0 -71
  206. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  207. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  208. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  209. package/dist/adapter/device-helpers/is-old-ie.js +0 -9
  210. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  211. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  212. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  213. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  214. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  215. package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
  216. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  217. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  218. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  219. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  220. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  221. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  222. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  223. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  224. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  225. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  226. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  227. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  228. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  229. package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
  230. package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
  231. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  232. package/dist/adapter/webgl-device.js.map +0 -1
  233. package/dist/classic/accessor.js.map +0 -1
  234. package/dist/classic/clear.js.map +0 -1
  235. package/dist/classic/copy-and-blit.js.map +0 -1
  236. package/dist/classic/format-utils.js.map +0 -1
  237. package/dist/classic/typed-array-utils.js.map +0 -1
  238. package/dist/context/context/create-browser-context.d.ts.map +0 -1
  239. package/dist/context/context/create-browser-context.js +0 -53
  240. package/dist/context/context/create-browser-context.js.map +0 -1
  241. package/dist/context/context/create-headless-context.d.ts +0 -9
  242. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  243. package/dist/context/context/create-headless-context.js +0 -42
  244. package/dist/context/context/create-headless-context.js.map +0 -1
  245. package/dist/context/context/webgl-checks.d.ts +0 -13
  246. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  247. package/dist/context/context/webgl-checks.js +0 -31
  248. package/dist/context/context/webgl-checks.js.map +0 -1
  249. package/dist/context/debug/spector.js.map +0 -1
  250. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  251. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  252. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  253. package/dist/context/polyfill/context-data.d.ts.map +0 -1
  254. package/dist/context/polyfill/context-data.js +0 -12
  255. package/dist/context/polyfill/context-data.js.map +0 -1
  256. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  257. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  258. package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
  259. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  260. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  261. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  262. package/dist/context/polyfill/polyfill-context.js +0 -87
  263. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  264. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  265. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  266. package/dist/context/polyfill/polyfill-table.js +0 -137
  267. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  268. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  269. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  270. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
  271. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  272. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  273. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  274. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  275. package/dist/index.js.map +0 -1
  276. package/dist/types.js.map +0 -1
  277. package/src/adapter/device-helpers/device-features.ts +0 -161
  278. package/src/adapter/device-helpers/device-limits.ts +0 -155
  279. package/src/adapter/device-helpers/is-old-ie.ts +0 -14
  280. package/src/context/context/create-headless-context.ts +0 -51
  281. package/src/context/context/webgl-checks.ts +0 -51
  282. package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
  283. package/src/context/polyfill/polyfill-context.ts +0 -104
  284. package/src/context/polyfill/polyfill-table.ts +0 -167
  285. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -365
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/vertex-formats.ts"],"names":[],"mappings":"AAGA,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;AAGb,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
+ {"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,66 +1,58 @@
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 */
1
6
  export function getVertexFormatFromGL(type, components) {
2
- const base = getVertexTypeFromGL(type);
3
- switch (components) {
4
- case 1:
5
- return base;
6
- case 2:
7
- return `${base}x2`;
8
- case 3:
9
- return `${base}x3`;
10
- case 4:
11
- return `${base}x4`;
12
- }
13
- throw new Error(String(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));
14
19
  }
15
- export function getVertexTypeFromGL(type) {
16
- let normalized = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
17
- switch (type) {
18
- case 5124:
19
- return normalized ? 'sint32' : 'sint32';
20
- case 5125:
21
- return normalized ? 'uint32' : 'uint32';
22
- case 5122:
23
- return normalized ? 'sint16' : 'unorm16';
24
- case 5123:
25
- return normalized ? 'uint16' : 'unorm16';
26
- case 5120:
27
- return normalized ? 'sint8' : 'snorm16';
28
- case 5121:
29
- return normalized ? 'uint8' : 'unorm8';
30
- case 5126:
31
- return 'float32';
32
- case 5131:
33
- return 'float16';
34
- }
35
- throw new Error(String(type));
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
36
  }
37
37
  export function getGLFromVertexType(dataType) {
38
- switch (dataType) {
39
- case 'uint8':
40
- return 5121;
41
- case 'sint8':
42
- return 5120;
43
- case 'unorm8':
44
- return 5121;
45
- case 'snorm8':
46
- return 5120;
47
- case 'uint16':
48
- return 5123;
49
- case 'sint16':
50
- return 5122;
51
- case 'unorm16':
52
- return 5123;
53
- case 'snorm16':
54
- return 5122;
55
- case 'uint32':
56
- return 5125;
57
- case 'sint32':
58
- return 5124;
59
- case 'float16':
60
- return 5131;
61
- case 'float32':
62
- return 5126;
63
- }
64
- throw new Error(String(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));
65
58
  }
66
- //# 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
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"decode-webgl-types.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/decode-webgl-types.ts"],"names":[],"mappings":"AAGA,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,CACjC,aAAa,EAAE,EAAE,GAChB;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAC,CAOrE;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,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,KAAA,GAAG;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAkBtG"}
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"}
@@ -1,89 +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 */
1
6
  export function isSamplerUniform(type) {
2
- return SAMPLER_TYPES.includes(type);
7
+ return SAMPLER_TYPES.includes(type);
3
8
  }
4
- const SAMPLER_TYPES = [35678, 35680, 35679, 35682, 36289, 36292, 36293, 36298, 36299, 36300, 36303, 36306, 36307, 36308, 36311];
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
5
27
  const COMPOSITE_GL_TYPES = {
6
- [5126]: [5126, 1, 'float', 'f32', 'float32'],
7
- [35664]: [5126, 2, 'vec2', 'vec2<f32>', 'float32x2'],
8
- [35665]: [5126, 3, 'vec3', 'vec3<f32>', 'float32x3'],
9
- [35666]: [5126, 4, 'vec4', 'vec4<f32>', 'float32x4'],
10
- [5124]: [5124, 1, 'int', 'i32', 'sint32'],
11
- [35667]: [5124, 2, 'ivec2', 'vec2<i32>', 'sint32x2'],
12
- [35668]: [5124, 3, 'ivec3', 'vec3<i32>', 'sint32x3'],
13
- [35669]: [5124, 4, 'ivec4', 'vec4<i32>', 'sint32x4'],
14
- [5125]: [5125, 1, 'uint', 'u32', 'uint32'],
15
- [36294]: [5125, 2, 'uvec2', 'vec2<u32>', 'uint32x2'],
16
- [36295]: [5125, 3, 'uvec3', 'vec3<u32>', 'uint32x3'],
17
- [36296]: [5125, 4, 'uvec4', 'vec4<u32>', 'uint32x4'],
18
- [35670]: [5126, 1, 'bool', 'f32', 'float32'],
19
- [35671]: [5126, 2, 'bvec2', 'vec2<f32>', 'float32x2'],
20
- [35672]: [5126, 3, 'bvec3', 'vec3<f32>', 'float32x3'],
21
- [35673]: [5126, 4, 'bvec4', 'vec4<f32>', 'float32x4'],
22
- [35674]: [5126, 8, 'mat2', 'mat2x2<f32>'],
23
- [35685]: [5126, 8, 'mat2x3', 'mat2x3<f32>'],
24
- [35686]: [5126, 8, 'mat2x4', 'mat2x4<f32>'],
25
- [35687]: [5126, 12, 'mat3x2', 'mat3x2<f32>'],
26
- [35675]: [5126, 12, 'mat3', 'mat3x3<f32>'],
27
- [35688]: [5126, 12, 'mat3x4', 'mat3x4<f32>'],
28
- [35689]: [5126, 16, 'mat4x2', 'mat4x2<f32>'],
29
- [35690]: [5126, 16, 'mat4x3', 'mat4x3<f32>'],
30
- [35676]: [5126, 16, 'mat4', 'mat4x4<f32>']
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
31
54
  };
55
+ /** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
32
56
  export function decodeGLUniformType(glUniformType) {
33
- const typeAndSize = COMPOSITE_GL_TYPES[glUniformType];
34
- if (!typeAndSize) {
35
- throw new Error('uniform');
36
- }
37
- const [glType, components,, format] = typeAndSize;
38
- return {
39
- format,
40
- components,
41
- glType
42
- };
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 };
43
63
  }
64
+ /** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
44
65
  export function decodeGLAttributeType(glAttributeType) {
45
- const typeAndSize = COMPOSITE_GL_TYPES[glAttributeType];
46
- if (!typeAndSize) {
47
- throw new Error('attribute');
48
- }
49
- const [, components,, shaderType, vertexFormat] = typeAndSize;
50
- const attributeType = shaderType;
51
- return {
52
- attributeType,
53
- vertexFormat,
54
- components
55
- };
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};
56
74
  }
75
+ /** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
57
76
  export function decomposeCompositeGLDataType(compositeGLDataType) {
58
- const typeAndSize = COMPOSITE_GL_TYPES[compositeGLDataType];
59
- if (!typeAndSize) {
60
- return null;
61
- }
62
- const [type, components] = typeAndSize;
63
- return {
64
- type,
65
- components
66
- };
77
+ const typeAndSize = COMPOSITE_GL_TYPES[compositeGLDataType];
78
+ if (!typeAndSize) {
79
+ return null;
80
+ }
81
+ const [type, components] = typeAndSize;
82
+ return { type, components };
67
83
  }
68
84
  export function getCompositeGLDataType(type, components) {
69
- switch (type) {
70
- case 5120:
71
- case 5121:
72
- case 5122:
73
- case 5123:
74
- type = 5126;
75
- break;
76
- default:
77
- }
78
- for (const glType in COMPOSITE_GL_TYPES) {
79
- const [compType, compComponents, name] = COMPOSITE_GL_TYPES[glType];
80
- if (compType === type && compComponents === components) {
81
- return {
82
- glType: Number(glType),
83
- name
84
- };
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
+ }
85
99
  }
86
- }
87
- return null;
100
+ return null;
88
101
  }
89
- //# sourceMappingURL=decode-webgl-types.js.map
@@ -4,5 +4,5 @@ import type { ShaderLayout } from '@luma.gl/core';
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;
7
+ export declare function getShaderLayout(gl: WebGL2RenderingContext, program: WebGLProgram): ShaderLayout;
8
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":"AAGA,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,eAAe,CAAC;AAOvB;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY,CA2D9F"}
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"}