@luma.gl/webgl 9.0.0-alpha.4 → 9.0.0-alpha.41

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 (525) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +23 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +42 -47
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +5 -5
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +20 -56
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +53 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +165 -201
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +51 -19
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +14 -21
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +2 -5
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +9 -11
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/{uniforms.js → decode-webgl-types.js} +20 -29
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  42. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  43. package/dist/adapter/helpers/get-shader-info.js +25 -0
  44. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  45. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  46. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  47. package/dist/adapter/helpers/get-shader-layout.js +60 -115
  48. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  49. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  50. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  51. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  52. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  53. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  54. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  55. package/dist/adapter/helpers/set-uniform.js +27 -57
  56. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  57. package/dist/adapter/helpers/webgl-topology-utils.d.ts +11 -0
  58. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  59. package/dist/adapter/helpers/{attribute-utils.js → webgl-topology-utils.js} +2 -19
  60. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  61. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  62. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  63. package/dist/adapter/objects/constants-to-keys.js +2 -29
  64. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  65. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  66. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-renderbuffer.js +34 -41
  68. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  69. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  70. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  71. package/dist/adapter/objects/webgl-resource.js +26 -83
  72. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  73. package/dist/adapter/resources/webgl-buffer.d.ts +18 -10
  74. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-buffer.js +49 -78
  76. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  78. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-buffer.js +169 -43
  80. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  82. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  84. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  85. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  86. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  87. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-framebuffer.js +46 -155
  89. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  91. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pass.js +91 -11
  93. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  94. package/dist/adapter/resources/webgl-render-pipeline.d.ts +53 -19
  95. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-render-pipeline.js +108 -230
  97. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  98. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  99. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-sampler.js +10 -19
  101. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  102. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  103. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-shader.js +19 -31
  105. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  106. package/dist/adapter/resources/webgl-texture.d.ts +64 -44
  107. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  108. package/dist/adapter/resources/webgl-texture.js +119 -235
  109. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +166 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +10 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +74 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +214 -128
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +23 -48
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/{buffer.d.ts → buffer-with-accessor.d.ts} +16 -29
  127. package/dist/classic/buffer-with-accessor.d.ts.map +1 -0
  128. package/dist/classic/{buffer.js → buffer-with-accessor.js} +55 -125
  129. package/dist/classic/buffer-with-accessor.js.map +1 -0
  130. package/dist/classic/clear.d.ts +22 -0
  131. package/dist/classic/clear.d.ts.map +1 -0
  132. package/dist/classic/clear.js +88 -0
  133. package/dist/classic/clear.js.map +1 -0
  134. package/dist/classic/copy-and-blit.d.ts +62 -0
  135. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  136. package/dist/classic/copy-and-blit.js +200 -0
  137. package/dist/classic/copy-and-blit.js.map +1 -0
  138. package/dist/classic/format-utils.d.ts +3 -0
  139. package/dist/classic/format-utils.d.ts.map +1 -0
  140. package/dist/classic/format-utils.js +38 -0
  141. package/dist/classic/format-utils.js.map +1 -0
  142. package/dist/classic/typed-array-utils.d.ts +15 -17
  143. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  144. package/dist/classic/typed-array-utils.js +1 -21
  145. package/dist/classic/typed-array-utils.js.map +1 -1
  146. package/dist/context/context/create-browser-context.d.ts +40 -0
  147. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  148. package/dist/context/context/create-browser-context.js +53 -0
  149. package/dist/context/context/create-browser-context.js.map +1 -0
  150. package/dist/context/context/create-headless-context.d.ts +9 -0
  151. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  152. package/dist/context/context/create-headless-context.js +42 -0
  153. package/dist/context/context/create-headless-context.js.map +1 -0
  154. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  155. package/dist/context/context/webgl-checks.js +1 -4
  156. package/dist/context/context/webgl-checks.js.map +1 -1
  157. package/dist/context/debug/spector.d.ts +1 -2
  158. package/dist/context/debug/spector.d.ts.map +1 -1
  159. package/dist/context/debug/spector.js +8 -20
  160. package/dist/context/debug/spector.js.map +1 -1
  161. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  162. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  163. package/dist/context/debug/webgl-developer-tools.js +16 -39
  164. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  165. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  166. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  167. package/dist/context/parameters/unified-parameter-api.js +9 -19
  168. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  169. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  170. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  171. package/dist/context/parameters/webgl-parameter-tables.js +18 -36
  172. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/context/polyfill/context-data.d.ts +13 -0
  174. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  175. package/dist/context/polyfill/context-data.js +12 -0
  176. package/dist/context/polyfill/context-data.js.map +1 -0
  177. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  178. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  179. package/dist/context/polyfill/get-parameter-polyfill.js +4 -9
  180. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  181. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-context.js +22 -30
  183. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  185. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  186. package/dist/context/polyfill/polyfill-table.js +10 -32
  187. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  188. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  189. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  190. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  191. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  192. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  193. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  194. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  195. package/dist/context/state-tracker/track-context-state.js +26 -62
  196. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  197. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  198. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  199. package/dist/context/state-tracker/with-parameters.js +8 -10
  200. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  201. package/dist/dist.dev.js +10391 -0
  202. package/dist/index.cjs +6625 -0
  203. package/dist/index.d.ts +27 -24
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +27 -26
  206. package/dist/index.js.map +1 -1
  207. package/dist/types.d.ts +3 -1
  208. package/dist/types.d.ts.map +1 -1
  209. package/dist/types.js.map +1 -1
  210. package/dist.min.js +37 -0
  211. package/package.json +21 -9
  212. package/src/adapter/converters/device-parameters.ts +124 -36
  213. package/src/adapter/converters/sampler-parameters.ts +22 -9
  214. package/src/adapter/converters/shader-formats.ts +44 -0
  215. package/src/adapter/converters/texture-formats.ts +267 -194
  216. package/src/adapter/converters/vertex-formats.ts +71 -10
  217. package/src/adapter/device-helpers/device-features.ts +13 -3
  218. package/src/adapter/device-helpers/device-limits.ts +5 -3
  219. package/src/adapter/device-helpers/get-device-info.ts +17 -10
  220. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  221. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  222. package/src/adapter/helpers/get-shader-info.ts +41 -0
  223. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  224. package/src/adapter/helpers/parse-shader-compiler-log.ts +4 -2
  225. package/src/adapter/helpers/set-uniform.ts +39 -35
  226. package/src/adapter/helpers/{attribute-utils.ts → webgl-topology-utils.ts} +7 -5
  227. package/src/adapter/objects/constants-to-keys.ts +6 -25
  228. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  229. package/src/adapter/objects/webgl-resource.ts +16 -23
  230. package/src/adapter/resources/webgl-buffer.ts +59 -58
  231. package/src/adapter/resources/webgl-command-buffer.ts +333 -25
  232. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  233. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  234. package/src/adapter/resources/webgl-framebuffer.ts +89 -133
  235. package/src/adapter/resources/webgl-render-pass.ts +160 -4
  236. package/src/adapter/resources/webgl-render-pipeline.ts +265 -170
  237. package/src/adapter/resources/webgl-sampler.ts +15 -9
  238. package/src/adapter/resources/webgl-shader.ts +14 -11
  239. package/src/adapter/resources/webgl-texture.ts +120 -90
  240. package/src/adapter/resources/webgl-vertex-array.ts +279 -0
  241. package/src/adapter/webgl-canvas-context.ts +16 -14
  242. package/src/adapter/webgl-device.ts +321 -78
  243. package/src/classic/accessor.ts +7 -17
  244. package/src/classic/{buffer.ts → buffer-with-accessor.ts} +68 -76
  245. package/src/classic/clear.ts +113 -0
  246. package/src/classic/copy-and-blit.ts +314 -0
  247. package/src/classic/format-utils.ts +46 -0
  248. package/src/classic/typed-array-utils.ts +19 -27
  249. package/src/context/context/create-browser-context.ts +140 -0
  250. package/src/context/context/create-headless-context.ts +51 -0
  251. package/src/context/context/webgl-checks.ts +3 -1
  252. package/src/context/debug/spector.ts +9 -6
  253. package/src/context/debug/webgl-developer-tools.ts +23 -15
  254. package/src/context/parameters/unified-parameter-api.ts +23 -14
  255. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  256. package/src/context/polyfill/context-data.ts +30 -0
  257. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  258. package/src/context/polyfill/polyfill-context.ts +10 -9
  259. package/src/context/polyfill/polyfill-table.ts +21 -16
  260. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  261. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  262. package/src/context/state-tracker/track-context-state.ts +20 -16
  263. package/src/context/state-tracker/with-parameters.ts +13 -4
  264. package/src/index.ts +69 -35
  265. package/src/types.ts +5 -0
  266. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  267. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  268. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  269. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  270. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  271. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  272. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  273. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  274. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  275. package/dist/adapter/helpers/uniforms.js.map +0 -1
  276. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  277. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  278. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  279. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  280. package/dist/bundle.d.ts +0 -2
  281. package/dist/bundle.d.ts.map +0 -1
  282. package/dist/bundle.js +0 -5
  283. package/dist/bundle.js.map +0 -1
  284. package/dist/classic/buffer.d.ts.map +0 -1
  285. package/dist/classic/buffer.js.map +0 -1
  286. package/dist/context/context/context-state.d.ts +0 -18
  287. package/dist/context/context/context-state.d.ts.map +0 -1
  288. package/dist/context/context/context-state.js +0 -26
  289. package/dist/context/context/context-state.js.map +0 -1
  290. package/dist/context/context/create-context.d.ts +0 -41
  291. package/dist/context/context/create-context.d.ts.map +0 -1
  292. package/dist/context/context/create-context.js +0 -49
  293. package/dist/context/context/create-context.js.map +0 -1
  294. package/dist/context/context/device-pixels.d.ts +0 -25
  295. package/dist/context/context/device-pixels.d.ts.map +0 -1
  296. package/dist/context/context/device-pixels.js +0 -98
  297. package/dist/context/context/device-pixels.js.map +0 -1
  298. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  299. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  300. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  301. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  302. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  303. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  304. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  305. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  306. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  307. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  308. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  309. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  310. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  311. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  312. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  313. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  314. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  315. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  316. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  317. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  318. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  319. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  320. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  321. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  322. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  323. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  324. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  325. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  326. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  327. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  328. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  329. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  330. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  331. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  333. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  334. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  335. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  336. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  337. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  339. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  341. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  343. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  345. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  347. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  349. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  351. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  353. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  354. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  355. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  356. package/dist/es5/adapter/webgl-device.js +0 -399
  357. package/dist/es5/adapter/webgl-device.js.map +0 -1
  358. package/dist/es5/bundle.js +0 -7
  359. package/dist/es5/bundle.js.map +0 -1
  360. package/dist/es5/classic/accessor.js +0 -181
  361. package/dist/es5/classic/accessor.js.map +0 -1
  362. package/dist/es5/classic/buffer.js +0 -470
  363. package/dist/es5/classic/buffer.js.map +0 -1
  364. package/dist/es5/classic/typed-array-utils.js +0 -126
  365. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  366. package/dist/es5/context/context/context-state.js +0 -31
  367. package/dist/es5/context/context/context-state.js.map +0 -1
  368. package/dist/es5/context/context/create-context.js +0 -69
  369. package/dist/es5/context/context/create-context.js.map +0 -1
  370. package/dist/es5/context/context/device-pixels.js +0 -115
  371. package/dist/es5/context/context/device-pixels.js.map +0 -1
  372. package/dist/es5/context/context/webgl-checks.js +0 -54
  373. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  374. package/dist/es5/context/debug/spector.js +0 -133
  375. package/dist/es5/context/debug/spector.js.map +0 -1
  376. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  377. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  378. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  379. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  380. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  381. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  382. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  383. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  384. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  385. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  386. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  387. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  388. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  389. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  390. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  391. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  392. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  393. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  394. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  395. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  396. package/dist/es5/index.js +0 -276
  397. package/dist/es5/index.js.map +0 -1
  398. package/dist/es5/init.js +0 -10
  399. package/dist/es5/init.js.map +0 -1
  400. package/dist/es5/types/webgl.js +0 -6
  401. package/dist/es5/types/webgl.js.map +0 -1
  402. package/dist/es5/types.js +0 -2
  403. package/dist/es5/types.js.map +0 -1
  404. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  405. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  406. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  407. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  408. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  409. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  410. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  411. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  412. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  413. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  414. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  415. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  416. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  417. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  418. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  419. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  420. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  421. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  422. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  423. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  424. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  425. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  426. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  427. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  428. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  429. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  430. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  431. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  432. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  433. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  434. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  435. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  436. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  437. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  438. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  439. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  440. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  441. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  442. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  443. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  445. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  447. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  449. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  450. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  451. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  453. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  455. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  457. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  459. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  460. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  461. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  462. package/dist/esm/adapter/webgl-device.js +0 -280
  463. package/dist/esm/adapter/webgl-device.js.map +0 -1
  464. package/dist/esm/bundle.js +0 -5
  465. package/dist/esm/bundle.js.map +0 -1
  466. package/dist/esm/classic/accessor.js +0 -144
  467. package/dist/esm/classic/accessor.js.map +0 -1
  468. package/dist/esm/classic/buffer.js +0 -384
  469. package/dist/esm/classic/buffer.js.map +0 -1
  470. package/dist/esm/classic/typed-array-utils.js +0 -112
  471. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  472. package/dist/esm/context/context/context-state.js +0 -26
  473. package/dist/esm/context/context/context-state.js.map +0 -1
  474. package/dist/esm/context/context/create-context.js +0 -49
  475. package/dist/esm/context/context/create-context.js.map +0 -1
  476. package/dist/esm/context/context/device-pixels.js +0 -98
  477. package/dist/esm/context/context/device-pixels.js.map +0 -1
  478. package/dist/esm/context/context/webgl-checks.js +0 -34
  479. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  480. package/dist/esm/context/debug/spector.js +0 -76
  481. package/dist/esm/context/debug/spector.js.map +0 -1
  482. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  483. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  484. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  485. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  487. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  489. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  490. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  491. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  492. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  493. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  495. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  496. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  497. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  498. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  499. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  500. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  501. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  502. package/dist/esm/index.js +0 -27
  503. package/dist/esm/index.js.map +0 -1
  504. package/dist/esm/init.js +0 -4
  505. package/dist/esm/init.js.map +0 -1
  506. package/dist/esm/types/webgl.js +0 -2
  507. package/dist/esm/types/webgl.js.map +0 -1
  508. package/dist/esm/types.js +0 -2
  509. package/dist/esm/types.js.map +0 -1
  510. package/dist/init.d.ts +0 -2
  511. package/dist/init.d.ts.map +0 -1
  512. package/dist/init.js +0 -4
  513. package/dist/init.js.map +0 -1
  514. package/dist/types/webgl.d.ts +0 -144
  515. package/dist/types/webgl.d.ts.map +0 -1
  516. package/dist/types/webgl.js +0 -2
  517. package/dist/types/webgl.js.map +0 -1
  518. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  519. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  520. package/src/bundle.ts +0 -4
  521. package/src/context/context/context-state.ts +0 -41
  522. package/src/context/context/create-context.ts +0 -110
  523. package/src/context/context/device-pixels.ts +0 -152
  524. package/src/init.ts +0 -4
  525. package/src/types/webgl.ts +0 -283
@@ -1,22 +1,83 @@
1
- import GL from '@luma.gl/constants';
2
- import {VertexFormat} from '@luma.gl/api';
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
3
 
4
- export function getVertexFormat(type: GL, components: number): VertexFormat {
5
- const base = getDataFormat(type);
4
+ import {GL} from '@luma.gl/constants';
5
+ import {VertexFormat, VertexType} from '@luma.gl/core';
6
+
7
+ type GLDataType =
8
+ | GL.UNSIGNED_BYTE
9
+ | GL.BYTE
10
+ | GL.UNSIGNED_SHORT
11
+ | GL.SHORT
12
+ | GL.UNSIGNED_INT
13
+ | GL.INT
14
+ | GL.HALF_FLOAT
15
+ | GL.FLOAT;
16
+
17
+
18
+ /** Get vertex format from GL constants */
19
+ export function getVertexFormatFromGL(type: GLDataType, components: 1 | 2 | 3 | 4): VertexFormat {
20
+ const base = getVertexTypeFromGL(type);
21
+ // prettier-ignore
6
22
  switch (components) {
23
+ // @ts-expect-error TODO deal with lack of formats
7
24
  case 1: return base;
8
25
  case 2: return `${base}x2`;
26
+ // @ts-expect-error TODO deal with lack of formats
9
27
  case 3: return `${base}x3`;
10
28
  case 4: return `${base}x4`;
11
29
  }
30
+ // @ts-ignore unreachable
31
+ throw new Error(String(components));
12
32
  }
13
33
 
14
- function getDataFormat(type: GL): 'sint32' | 'uint32' | 'float32' {
34
+ /** Get data type from GL constants */
35
+ export function getVertexTypeFromGL(type: GLDataType, normalized = false): VertexType {
36
+ // prettier-ignore
15
37
  switch (type) {
16
- // TODO
17
- case GL.INT: return 'sint32';
18
- case GL.UNSIGNED_INT: return 'uint32';
38
+ // WebGPU does not support normalized 32 bit integer attributes
39
+ case GL.INT: return normalized ? 'sint32' : 'sint32';
40
+ case GL.UNSIGNED_INT: return normalized ? 'uint32' : 'uint32';
41
+ case GL.SHORT: return normalized ? 'sint16' : 'unorm16';
42
+ case GL.UNSIGNED_SHORT: return normalized ? 'uint16' : 'unorm16';
43
+ case GL.BYTE: return normalized ? 'sint8' : 'snorm16';
44
+ case GL.UNSIGNED_BYTE: return normalized ? 'uint8' : 'unorm8';
19
45
  case GL.FLOAT: return 'float32';
20
- default: throw new Error(String(type));
46
+ case GL.HALF_FLOAT: return 'float16';
21
47
  }
22
- }
48
+ // @ts-ignore unreachable
49
+ throw new Error(String(type));
50
+ }
51
+
52
+ export function getGLFromVertexType(
53
+ dataType: VertexType
54
+ ):
55
+ | GL.UNSIGNED_BYTE
56
+ | GL.BYTE
57
+ | GL.UNSIGNED_SHORT
58
+ | GL.SHORT
59
+ | GL.UNSIGNED_INT
60
+ | GL.INT
61
+ | GL.HALF_FLOAT
62
+ | GL.FLOAT {
63
+ // prettier-ignore
64
+ switch (dataType) {
65
+ case 'uint8': return GL.UNSIGNED_BYTE;
66
+ case 'sint8': return GL.BYTE;
67
+ case 'unorm8': return GL.UNSIGNED_BYTE;
68
+ case 'snorm8': return GL.BYTE;
69
+ case 'uint16': return GL.UNSIGNED_SHORT;
70
+ case 'sint16': return GL.SHORT;
71
+ case 'unorm16': return GL.UNSIGNED_SHORT;
72
+ case 'snorm16': return GL.SHORT;
73
+ case 'uint32': return GL.UNSIGNED_INT;
74
+ case 'sint32': return GL.INT;
75
+ // WebGPU does not support normalized 32 bit integer attributes
76
+ // case 'unorm32': return GL.UNSIGNED_INT;
77
+ // case 'snorm32': return GL.INT;
78
+ case 'float16': return GL.HALF_FLOAT;
79
+ case 'float32': return GL.FLOAT;
80
+ }
81
+ // @ts-ignore unreachable
82
+ throw new Error(String(dataType));
83
+ }
@@ -1,9 +1,11 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  // Feature detection for WebGL
2
5
  // Provides a function that enables simple checking of which WebGL features are
3
6
  // available in an WebGL1 or WebGL2 environment.
4
7
 
5
- import {DeviceFeature} from '@luma.gl/api';
6
- import GL from '@luma.gl/constants';
8
+ import {DeviceFeature} from '@luma.gl/core';
7
9
  import {isWebGL2} from '../../context/context/webgl-checks';
8
10
  import {isOldIE} from './is-old-ie';
9
11
  import {getTextureFeatures, _checkFloat32ColorAttachment} from '../converters/texture-formats';
@@ -47,7 +49,12 @@ export function getWebGLFeatures(gl: WebGLRenderingContext): Set<DeviceFeature>
47
49
  }
48
50
 
49
51
  function isFeatureSupported(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {
50
- const [webgl1Feature, webgl2Feature] = WEBGL_FEATURES[feature];;
52
+ const featureInfo = WEBGL_FEATURES[feature];
53
+ if (!featureInfo) {
54
+ return false;
55
+ }
56
+
57
+ const [webgl1Feature, webgl2Feature] = featureInfo || [];
51
58
 
52
59
  // Get extension name from table
53
60
  const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;
@@ -100,6 +107,9 @@ export function canCompileGLSLExtension(gl: WebGLRenderingContext, extensionName
100
107
  const source = `#extension GL_${extensionName} : ${behavior}\nvoid main(void) {}`;
101
108
 
102
109
  const shader = gl.createShader(gl.VERTEX_SHADER);
110
+ if (!shader) {
111
+ throw new Error('shader');
112
+ }
103
113
  gl.shaderSource(shader, source);
104
114
  gl.compileShader(shader);
105
115
  const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
@@ -1,11 +1,13 @@
1
1
  // luma.gl, MIT license
2
- import type {DeviceLimits} from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import type {DeviceLimits} from '@luma.gl/core';
5
+ import {GL} from '@luma.gl/constants';
4
6
  import {getWebGL2Context} from '../../context/context/webgl-checks';
5
7
 
6
8
  /** Populate a WebGPU style device limits */
7
9
  export function getDeviceLimits(gl: WebGLRenderingContext): DeviceLimits {
8
- const gl2: WebGL2RenderingContext = getWebGL2Context(gl);
10
+ const gl2: WebGL2RenderingContext | null = getWebGL2Context(gl);
9
11
  return {
10
12
  maxTextureDimension1D: 0, // WebGL does not support 1D textures
11
13
  maxTextureDimension2D: gl.getParameter(GL.MAX_TEXTURE_SIZE),
@@ -1,5 +1,8 @@
1
- import {DeviceInfo} from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {DeviceInfo} from '@luma.gl/core';
5
+ import {GL} from '@luma.gl/constants';
3
6
  import {isWebGL2} from '../../context/context/webgl-checks';
4
7
 
5
8
  /** @returns strings identifying the GPU vendor and driver. */
@@ -27,23 +30,27 @@ export function getDeviceInfo(gl: WebGLRenderingContext): DeviceInfo {
27
30
  };
28
31
  }
29
32
 
30
- function identifyGPUVendor(vendor: string, renderer: string): 'nvidia' | 'intel' | 'apple' | 'amd' | 'unknown' {
31
- if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {
33
+ function identifyGPUVendor(vendor: string, renderer: string): 'nvidia' | 'intel' | 'apple' | 'amd' | 'software' | 'unknown' {
34
+ if ((/NVIDIA/i.exec(vendor)) || (/NVIDIA/i.exec(renderer))) {
32
35
  return 'nvidia';
33
36
  }
34
- if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {
37
+ if ((/INTEL/i.exec(vendor)) || (/INTEL/i.exec(renderer))) {
35
38
  return 'intel';
36
39
  }
37
- if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
40
+ if ((/Apple/i.exec(vendor)) || (/Apple/i.exec(renderer))) {
38
41
  return 'apple';
39
42
  }
40
43
  if (
41
- vendor.match(/AMD/i) ||
42
- renderer.match(/AMD/i) ||
43
- vendor.match(/ATI/i) ||
44
- renderer.match(/ATI/i)
44
+ (/AMD/i.exec(vendor)) ||
45
+ (/AMD/i.exec(renderer)) ||
46
+ (/ATI/i.exec(vendor)) ||
47
+ (/ATI/i.exec(renderer))
45
48
  ) {
46
49
  return 'amd';
47
50
  }
51
+ if ((/SwiftShader/i.exec(vendor)) || (/SwiftShader/i.exec(renderer))) {
52
+ return 'software';
53
+ }
54
+
48
55
  return 'unknown';
49
56
  }
@@ -1,3 +1,6 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  // opts allows user agent to be overridden for testing
2
5
  export function isOldIE(opts = {}) {
3
6
  const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};
@@ -1,6 +1,8 @@
1
- import {UniformFormat, VertexFormat} from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
3
- import {GLUniformType, GLSamplerType, GLCompositeType, GLType} from '../../types/webgl'
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {ShaderUniformType, ShaderAttributeType, VertexFormat} from '@luma.gl/core';
5
+ import {GL, GLUniformType, GLSamplerType, GLCompositeType, GLDataType} from '@luma.gl/constants';
4
6
 
5
7
  /** Check is uniform is of sampler type */
6
8
  export function isSamplerUniform(type: GLUniformType): boolean {
@@ -25,8 +27,11 @@ const SAMPLER_TYPES: GLSamplerType[] = [
25
27
  GL.UNSIGNED_INT_SAMPLER_2D_ARRAY
26
28
  ];
27
29
 
28
- // Composite types table
29
- const COMPOSITE_GL_TYPES: Record<GLCompositeType, [GLType, number, string, UniformFormat, VertexFormat?]> = {
30
+ // Composite types table
31
+ const COMPOSITE_GL_TYPES: Record<
32
+ GLCompositeType,
33
+ [GLDataType, number, string, ShaderUniformType, VertexFormat?]
34
+ > = {
30
35
  [GL.FLOAT]: [GL.FLOAT, 1, 'float', 'f32', 'float32'],
31
36
  [GL.FLOAT_VEC2]: [GL.FLOAT, 2, 'vec2', 'vec2<f32>', 'float32x2'],
32
37
  [GL.FLOAT_VEC3]: [GL.FLOAT, 3, 'vec3', 'vec3<f32>', 'float32x3'],
@@ -42,11 +47,12 @@ const COMPOSITE_GL_TYPES: Record<GLCompositeType, [GLType, number, string, Unifo
42
47
  [GL.UNSIGNED_INT_VEC3]: [GL.UNSIGNED_INT, 3, 'uvec3', 'vec3<u32>', 'uint32x3'],
43
48
  [GL.UNSIGNED_INT_VEC4]: [GL.UNSIGNED_INT, 4, 'uvec4', 'vec4<u32>', 'uint32x4'],
44
49
 
45
- [GL.BOOL]: [GL.FLOAT, 1, 'bool', 'f32', 'float32x2'],
46
- [GL.BOOL_VEC2]: [GL.FLOAT, 2, 'bvec2', 'vec2<f32>'],
47
- [GL.BOOL_VEC3]: [GL.FLOAT, 3, 'bvec3', 'vec3<f32>'],
48
- [GL.BOOL_VEC4]: [GL.FLOAT, 4, 'bvec4', 'vec4<f32>'],
50
+ [GL.BOOL]: [GL.FLOAT, 1, 'bool', 'f32', 'float32'],
51
+ [GL.BOOL_VEC2]: [GL.FLOAT, 2, 'bvec2', 'vec2<f32>', 'float32x2'],
52
+ [GL.BOOL_VEC3]: [GL.FLOAT, 3, 'bvec3', 'vec3<f32>', 'float32x3'],
53
+ [GL.BOOL_VEC4]: [GL.FLOAT, 4, 'bvec4', 'vec4<f32>', 'float32x4'],
49
54
 
55
+ // TODO - are sizes/components below correct?
50
56
  [GL.FLOAT_MAT2]: [GL.FLOAT, 8, 'mat2', 'mat2x2<f32>'], // 4
51
57
  [GL.FLOAT_MAT2x3]: [GL.FLOAT, 8, 'mat2x3', 'mat2x3<f32>'], // 6
52
58
  [GL.FLOAT_MAT2x4]: [GL.FLOAT, 8, 'mat2x4', 'mat2x4<f32>'], // 8
@@ -60,28 +66,40 @@ const COMPOSITE_GL_TYPES: Record<GLCompositeType, [GLType, number, string, Unifo
60
66
  [GL.FLOAT_MAT4]: [GL.FLOAT, 16, 'mat4', 'mat4x4<f32>'] // 16
61
67
  };
62
68
 
63
- /** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
64
- export function decodeUniformType(uniformType: GL): {format: UniformFormat, components: number, glType: GLType} {
65
- const typeAndSize = COMPOSITE_GL_TYPES[uniformType];
69
+ /** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
70
+ export function decodeGLUniformType(
71
+ glUniformType: GL
72
+ ): {format: ShaderUniformType; components: number; glType: GLDataType} {
73
+ const typeAndSize = COMPOSITE_GL_TYPES[glUniformType];
66
74
  if (!typeAndSize) {
67
- return null;
75
+ throw new Error('uniform');
68
76
  }
69
77
  const [glType, components, , format] = typeAndSize;
70
78
  return {format, components, glType};
71
79
  }
72
80
 
73
- export function decodeAttributeType(uniformType: GL): {format: VertexFormat, components: number, glType: GLType} {
74
- const typeAndSize = COMPOSITE_GL_TYPES[uniformType];
81
+ /** Decomposes a composite type (GL.VEC3) into a basic type (GL.FLOAT) and components (3) */
82
+ export function decodeGLAttributeType(glAttributeType: GL): {
83
+ attributeType: ShaderAttributeType;
84
+ vertexFormat: VertexFormat;
85
+ components: number;
86
+ // glType: GLDataType;
87
+ } {
88
+ const typeAndSize = COMPOSITE_GL_TYPES[glAttributeType];
75
89
  if (!typeAndSize) {
76
- return null;
90
+ throw new Error('attribute')
77
91
  }
78
- const [glType, components, , , format] = typeAndSize;
79
- return {format, components, glType};
92
+ const [, components, , shaderType, vertexFormat] = typeAndSize;
93
+ // TODO sanity - if (shaderType.startsWith('mat' ...))
94
+ const attributeType = shaderType as unknown as ShaderAttributeType
95
+ return {attributeType, vertexFormat, components}; // , glType};
80
96
  }
81
97
 
82
98
  /** Decomposes a composite type GL.VEC3 into a basic type (GL.FLOAT) and components (3) */
83
- export function decomposeCompositeGLType(compositeGLType: GLCompositeType): {type: GLType, components: number} | null {
84
- const typeAndSize = COMPOSITE_GL_TYPES[compositeGLType];
99
+ export function decomposeCompositeGLDataType(
100
+ compositeGLDataType: GLCompositeType
101
+ ): {type: GLDataType; components: number} | null {
102
+ const typeAndSize = COMPOSITE_GL_TYPES[compositeGLDataType];
85
103
  if (!typeAndSize) {
86
104
  return null;
87
105
  }
@@ -89,7 +107,7 @@ export function decomposeCompositeGLType(compositeGLType: GLCompositeType): {typ
89
107
  return {type, components};
90
108
  }
91
109
 
92
- export function getCompositeGLType(type: GL, components): {glType: GLType, name: string} | null {
110
+ export function getCompositeGLDataType(type: GL, components): {glType: GLDataType; name: string} | null {
93
111
  switch (type) {
94
112
  case GL.BYTE:
95
113
  case GL.UNSIGNED_BYTE:
@@ -0,0 +1,41 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ // Note: This was the only dependency that made @luma.gl/webgl depend on @luma.gl/shadertools
5
+ // This file was coped from shadertools to avoid the dependency
6
+
7
+ /** Information extracted from shader source code */
8
+ export type ShaderInfo = {
9
+ name: string;
10
+ language: 'glsl' | 'wgsl';
11
+ version: number;
12
+ };
13
+
14
+ /** Extracts information from shader source code */
15
+ export function getShaderInfo(source: string, defaultName?: string): ShaderInfo {
16
+ return {
17
+ name: getShaderName(source, defaultName),
18
+ language: 'glsl',
19
+ version: getShaderVersion(source)
20
+ };
21
+ }
22
+
23
+ /** Extracts GLSLIFY style naming of shaders: `#define SHADER_NAME ...` */
24
+ function getShaderName(shader: string, defaultName: string = 'unnamed'): string {
25
+ const SHADER_NAME_REGEXP = /#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/;
26
+ const match = SHADER_NAME_REGEXP.exec(shader);
27
+ return match ? match[1] : defaultName;
28
+ }
29
+
30
+ /** returns GLSL shader version of given shader string */
31
+ function getShaderVersion(source: string): number {
32
+ let version = 100;
33
+ const words = source.match(/[^\s]+/g);
34
+ if (words && words.length >= 2 && words[0] === '#version') {
35
+ const v = parseInt(words[1], 10);
36
+ if (Number.isFinite(v)) {
37
+ version = v;
38
+ }
39
+ }
40
+ return version;
41
+ }