@luma.gl/webgl 9.0.0-alpha.15 → 9.0.0-alpha.16

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 (367) hide show
  1. package/dist/adapter/converters/device-parameters.js +199 -136
  2. package/dist/adapter/converters/renderbuffer-formats.d.ts +1 -1
  3. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  4. package/dist/adapter/converters/renderbuffer-formats.js +62 -176
  5. package/dist/adapter/converters/sampler-parameters.js +149 -206
  6. package/dist/adapter/converters/texture-formats.d.ts +2 -2
  7. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  8. package/dist/adapter/converters/texture-formats.js +437 -890
  9. package/dist/adapter/converters/vertex-formats.js +15 -33
  10. package/dist/adapter/device-helpers/device-features.js +119 -100
  11. package/dist/adapter/device-helpers/device-limits.d.ts +1 -1
  12. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  13. package/dist/adapter/device-helpers/device-limits.js +88 -86
  14. package/dist/adapter/device-helpers/get-device-info.js +42 -43
  15. package/dist/adapter/device-helpers/is-old-ie.js +9 -6
  16. package/dist/adapter/helpers/attribute-utils.js +50 -74
  17. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  18. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  19. package/dist/adapter/helpers/get-shader-info.js +27 -0
  20. package/dist/adapter/helpers/get-shader-layout.js +307 -296
  21. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  22. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  23. package/dist/adapter/helpers/parse-shader-compiler-log.js +32 -33
  24. package/dist/adapter/helpers/set-uniform.js +67 -110
  25. package/dist/adapter/helpers/uniforms.js +80 -85
  26. package/dist/adapter/objects/constants-to-keys.js +33 -33
  27. package/dist/adapter/objects/webgl-renderbuffer.d.ts +1 -1
  28. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  29. package/dist/adapter/objects/webgl-renderbuffer.js +67 -86
  30. package/dist/adapter/objects/webgl-resource.js +213 -205
  31. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +1 -1
  32. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  33. package/dist/adapter/objects/webgl-vertex-array-object.js +74 -76
  34. package/dist/adapter/resources/webgl-buffer.js +150 -147
  35. package/dist/adapter/resources/webgl-command-buffer.d.ts +5 -5
  36. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  37. package/dist/adapter/resources/webgl-command-buffer.js +39 -55
  38. package/dist/adapter/resources/webgl-command-encoder.js +25 -49
  39. package/dist/adapter/resources/webgl-external-texture.js +91 -1
  40. package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
  41. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  42. package/dist/adapter/resources/webgl-framebuffer.js +231 -258
  43. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  44. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgl-render-pass.js +8 -18
  46. package/dist/adapter/resources/webgl-render-pipeline.js +316 -378
  47. package/dist/adapter/resources/webgl-sampler.js +42 -47
  48. package/dist/adapter/resources/webgl-shader.d.ts +1 -2
  49. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  50. package/dist/adapter/resources/webgl-shader.js +58 -68
  51. package/dist/adapter/resources/webgl-texture.d.ts +5 -5
  52. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  53. package/dist/adapter/resources/webgl-texture.js +661 -815
  54. package/dist/adapter/webgl-canvas-context.js +55 -49
  55. package/dist/adapter/webgl-device.js +288 -338
  56. package/dist/bundle.js +1 -2
  57. package/dist/classic/accessor.js +120 -127
  58. package/dist/classic/buffer.d.ts +1 -1
  59. package/dist/classic/buffer.d.ts.map +1 -1
  60. package/dist/classic/buffer.js +325 -356
  61. package/dist/classic/typed-array-utils.d.ts +1 -1
  62. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  63. package/dist/classic/typed-array-utils.js +91 -101
  64. package/dist/context/context/create-browser-context.d.ts +1 -2
  65. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  66. package/dist/context/context/create-browser-context.js +61 -52
  67. package/dist/context/context/create-headless-context.d.ts +1 -1
  68. package/dist/context/context/create-headless-context.d.ts.map +1 -1
  69. package/dist/context/context/create-headless-context.js +26 -33
  70. package/dist/context/context/webgl-checks.js +25 -20
  71. package/dist/context/debug/spector.d.ts +1 -2
  72. package/dist/context/debug/spector.d.ts.map +1 -1
  73. package/dist/context/debug/spector.js +53 -62
  74. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  75. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  76. package/dist/context/debug/webgl-developer-tools.js +106 -93
  77. package/dist/context/parameters/unified-parameter-api.js +91 -55
  78. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  79. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  80. package/dist/context/parameters/webgl-parameter-tables.js +462 -423
  81. package/dist/context/polyfill/context-data.js +16 -12
  82. package/dist/context/polyfill/get-parameter-polyfill.js +91 -76
  83. package/dist/context/polyfill/polyfill-context.js +75 -80
  84. package/dist/context/polyfill/polyfill-table.js +133 -139
  85. package/dist/context/polyfill/polyfill-vertex-array-object.js +255 -297
  86. package/dist/context/state-tracker/deep-array-equal.js +16 -18
  87. package/dist/context/state-tracker/track-context-state.js +183 -161
  88. package/dist/context/state-tracker/with-parameters.js +43 -35
  89. package/dist/dist.min.js +1 -0
  90. package/dist/es5/adapter/converters/device-parameters.js +3 -38
  91. package/dist/es5/adapter/converters/device-parameters.js.map +1 -1
  92. package/dist/es5/adapter/converters/renderbuffer-formats.js +2 -14
  93. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +1 -1
  94. package/dist/es5/adapter/converters/sampler-parameters.js +2 -65
  95. package/dist/es5/adapter/converters/sampler-parameters.js.map +1 -1
  96. package/dist/es5/adapter/converters/texture-formats.js +9 -81
  97. package/dist/es5/adapter/converters/texture-formats.js.map +1 -1
  98. package/dist/es5/adapter/converters/vertex-formats.js +0 -12
  99. package/dist/es5/adapter/converters/vertex-formats.js.map +1 -1
  100. package/dist/es5/adapter/device-helpers/device-features.js +6 -40
  101. package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
  102. package/dist/es5/adapter/device-helpers/device-limits.js +0 -10
  103. package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -1
  104. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -10
  105. package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
  106. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -1
  107. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -1
  108. package/dist/es5/adapter/helpers/attribute-utils.js +3 -25
  109. package/dist/es5/adapter/helpers/attribute-utils.js.map +1 -1
  110. package/dist/es5/adapter/helpers/get-shader-info.js +31 -0
  111. package/dist/es5/adapter/helpers/get-shader-info.js.map +1 -0
  112. package/dist/es5/adapter/helpers/get-shader-layout.js +23 -101
  113. package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -1
  114. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +6 -24
  115. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  116. package/dist/es5/adapter/helpers/set-uniform.js +0 -33
  117. package/dist/es5/adapter/helpers/set-uniform.js.map +1 -1
  118. package/dist/es5/adapter/helpers/uniforms.js +13 -37
  119. package/dist/es5/adapter/helpers/uniforms.js.map +1 -1
  120. package/dist/es5/adapter/objects/constants-to-keys.js +1 -12
  121. package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -1
  122. package/dist/es5/adapter/objects/webgl-renderbuffer.js +5 -33
  123. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -1
  124. package/dist/es5/adapter/objects/webgl-resource.js +6 -60
  125. package/dist/es5/adapter/objects/webgl-resource.js.map +1 -1
  126. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +7 -35
  127. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  128. package/dist/es5/adapter/resources/webgl-buffer.js +20 -66
  129. package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -1
  130. package/dist/es5/adapter/resources/webgl-command-buffer.js +6 -32
  131. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +1 -1
  132. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -18
  133. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -1
  134. package/dist/es5/adapter/resources/webgl-external-texture.js.map +1 -1
  135. package/dist/es5/adapter/resources/webgl-framebuffer.js +10 -82
  136. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -1
  137. package/dist/es5/adapter/resources/webgl-render-pass.js +2 -19
  138. package/dist/es5/adapter/resources/webgl-render-pass.js.map +1 -1
  139. package/dist/es5/adapter/resources/webgl-render-pipeline.js +24 -133
  140. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -1
  141. package/dist/es5/adapter/resources/webgl-sampler.js +2 -28
  142. package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -1
  143. package/dist/es5/adapter/resources/webgl-shader.js +13 -52
  144. package/dist/es5/adapter/resources/webgl-shader.js.map +1 -1
  145. package/dist/es5/adapter/resources/webgl-texture.js +137 -291
  146. package/dist/es5/adapter/resources/webgl-texture.js.map +1 -1
  147. package/dist/es5/adapter/webgl-canvas-context.js +0 -24
  148. package/dist/es5/adapter/webgl-canvas-context.js.map +1 -1
  149. package/dist/es5/adapter/webgl-device.js +40 -127
  150. package/dist/es5/adapter/webgl-device.js.map +1 -1
  151. package/dist/es5/bundle.js +0 -1
  152. package/dist/es5/bundle.js.map +1 -1
  153. package/dist/es5/classic/accessor.js +1 -31
  154. package/dist/es5/classic/accessor.js.map +1 -1
  155. package/dist/es5/classic/buffer.js +32 -102
  156. package/dist/es5/classic/buffer.js.map +1 -1
  157. package/dist/es5/classic/typed-array-utils.js +10 -37
  158. package/dist/es5/classic/typed-array-utils.js.map +1 -1
  159. package/dist/es5/context/context/create-browser-context.js +4 -21
  160. package/dist/es5/context/context/create-browser-context.js.map +1 -1
  161. package/dist/es5/context/context/create-headless-context.js +8 -21
  162. package/dist/es5/context/context/create-headless-context.js.map +1 -1
  163. package/dist/es5/context/context/webgl-checks.js +4 -14
  164. package/dist/es5/context/context/webgl-checks.js.map +1 -1
  165. package/dist/es5/context/debug/spector.js +20 -54
  166. package/dist/es5/context/debug/spector.js.map +1 -1
  167. package/dist/es5/context/debug/webgl-developer-tools.js +19 -65
  168. package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -1
  169. package/dist/es5/context/parameters/unified-parameter-api.js +3 -28
  170. package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
  171. package/dist/es5/context/parameters/webgl-parameter-tables.js +18 -65
  172. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
  173. package/dist/es5/context/polyfill/context-data.js +0 -3
  174. package/dist/es5/context/polyfill/context-data.js.map +1 -1
  175. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -12
  176. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/es5/context/polyfill/polyfill-context.js +8 -33
  178. package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
  179. package/dist/es5/context/polyfill/polyfill-table.js +3 -27
  180. package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
  181. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -70
  182. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  183. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -5
  184. package/dist/es5/context/state-tracker/deep-array-equal.js.map +1 -1
  185. package/dist/es5/context/state-tracker/track-context-state.js +10 -53
  186. package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
  187. package/dist/es5/context/state-tracker/with-parameters.js +1 -13
  188. package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
  189. package/dist/es5/index.js +72 -99
  190. package/dist/es5/index.js.map +1 -1
  191. package/dist/es5/init.js +0 -3
  192. package/dist/es5/init.js.map +1 -1
  193. package/dist/es5/types/webgl.js +0 -1
  194. package/dist/es5/types/webgl.js.map +1 -1
  195. package/dist/es5/types.js.map +1 -1
  196. package/dist/esm/adapter/converters/device-parameters.js +0 -20
  197. package/dist/esm/adapter/converters/device-parameters.js.map +1 -1
  198. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -4
  199. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +1 -1
  200. package/dist/esm/adapter/converters/sampler-parameters.js +2 -57
  201. package/dist/esm/adapter/converters/sampler-parameters.js.map +1 -1
  202. package/dist/esm/adapter/converters/texture-formats.js +8 -52
  203. package/dist/esm/adapter/converters/texture-formats.js.map +1 -1
  204. package/dist/esm/adapter/converters/vertex-formats.js +0 -9
  205. package/dist/esm/adapter/converters/vertex-formats.js.map +1 -1
  206. package/dist/esm/adapter/device-helpers/device-features.js +2 -19
  207. package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
  208. package/dist/esm/adapter/device-helpers/device-limits.js +0 -3
  209. package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -1
  210. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -6
  211. package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
  212. package/dist/esm/adapter/device-helpers/is-old-ie.js +2 -1
  213. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -1
  214. package/dist/esm/adapter/helpers/attribute-utils.js +0 -17
  215. package/dist/esm/adapter/helpers/attribute-utils.js.map +1 -1
  216. package/dist/esm/adapter/helpers/get-shader-info.js +25 -0
  217. package/dist/esm/adapter/helpers/get-shader-info.js.map +1 -0
  218. package/dist/esm/adapter/helpers/get-shader-layout.js +2 -48
  219. package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -1
  220. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -7
  221. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  222. package/dist/esm/adapter/helpers/set-uniform.js +0 -30
  223. package/dist/esm/adapter/helpers/set-uniform.js.map +1 -1
  224. package/dist/esm/adapter/helpers/uniforms.js +0 -10
  225. package/dist/esm/adapter/helpers/uniforms.js.map +1 -1
  226. package/dist/esm/adapter/objects/constants-to-keys.js +0 -7
  227. package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -1
  228. package/dist/esm/adapter/objects/webgl-renderbuffer.js +2 -18
  229. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -1
  230. package/dist/esm/adapter/objects/webgl-resource.js +10 -57
  231. package/dist/esm/adapter/objects/webgl-resource.js.map +1 -1
  232. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +5 -15
  233. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  234. package/dist/esm/adapter/resources/webgl-buffer.js +12 -40
  235. package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -1
  236. package/dist/esm/adapter/resources/webgl-command-buffer.js +2 -17
  237. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +1 -1
  238. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -12
  239. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -1
  240. package/dist/esm/adapter/resources/webgl-external-texture.js.map +1 -1
  241. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -60
  242. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -1
  243. package/dist/esm/adapter/resources/webgl-render-pass.js +1 -8
  244. package/dist/esm/adapter/resources/webgl-render-pass.js.map +1 -1
  245. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -89
  246. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -1
  247. package/dist/esm/adapter/resources/webgl-sampler.js +0 -12
  248. package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -1
  249. package/dist/esm/adapter/resources/webgl-shader.js +2 -16
  250. package/dist/esm/adapter/resources/webgl-shader.js.map +1 -1
  251. package/dist/esm/adapter/resources/webgl-texture.js +36 -154
  252. package/dist/esm/adapter/resources/webgl-texture.js.map +1 -1
  253. package/dist/esm/adapter/webgl-canvas-context.js +0 -14
  254. package/dist/esm/adapter/webgl-canvas-context.js.map +1 -1
  255. package/dist/esm/adapter/webgl-device.js +19 -89
  256. package/dist/esm/adapter/webgl-device.js.map +1 -1
  257. package/dist/esm/bundle.js +0 -1
  258. package/dist/esm/bundle.js.map +1 -1
  259. package/dist/esm/classic/accessor.js +10 -34
  260. package/dist/esm/classic/accessor.js.map +1 -1
  261. package/dist/esm/classic/buffer.js +15 -71
  262. package/dist/esm/classic/buffer.js.map +1 -1
  263. package/dist/esm/classic/typed-array-utils.js +0 -20
  264. package/dist/esm/classic/typed-array-utils.js.map +1 -1
  265. package/dist/esm/context/context/create-browser-context.js +6 -14
  266. package/dist/esm/context/context/create-browser-context.js.map +1 -1
  267. package/dist/esm/context/context/create-headless-context.js +2 -6
  268. package/dist/esm/context/context/create-headless-context.js.map +1 -1
  269. package/dist/esm/context/context/webgl-checks.js +0 -3
  270. package/dist/esm/context/context/webgl-checks.js.map +1 -1
  271. package/dist/esm/context/debug/spector.js +2 -14
  272. package/dist/esm/context/debug/spector.js.map +1 -1
  273. package/dist/esm/context/debug/webgl-developer-tools.js +4 -22
  274. package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -1
  275. package/dist/esm/context/parameters/unified-parameter-api.js +2 -13
  276. package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
  277. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -19
  278. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
  279. package/dist/esm/context/polyfill/context-data.js +0 -2
  280. package/dist/esm/context/polyfill/context-data.js.map +1 -1
  281. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -5
  282. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
  283. package/dist/esm/context/polyfill/polyfill-context.js +14 -21
  284. package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
  285. package/dist/esm/context/polyfill/polyfill-table.js +0 -23
  286. package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
  287. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -70
  288. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  289. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -4
  290. package/dist/esm/context/state-tracker/deep-array-equal.js.map +1 -1
  291. package/dist/esm/context/state-tracker/track-context-state.js +11 -45
  292. package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
  293. package/dist/esm/context/state-tracker/with-parameters.js +0 -6
  294. package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
  295. package/dist/esm/index.js.map +1 -1
  296. package/dist/esm/init.js.map +1 -1
  297. package/dist/esm/types/webgl.js.map +1 -1
  298. package/dist/esm/types.js.map +1 -1
  299. package/dist/index.js +39 -25
  300. package/dist/init.js +1 -2
  301. package/dist/types/webgl.d.ts +20 -20
  302. package/dist/types/webgl.d.ts.map +1 -1
  303. package/dist/types/webgl.js +0 -1
  304. package/dist/types.d.ts +1 -1
  305. package/dist/types.d.ts.map +1 -1
  306. package/dist/types.js +0 -1
  307. package/package.json +8 -8
  308. package/src/adapter/helpers/get-shader-info.ts +37 -0
  309. package/src/adapter/helpers/parse-shader-compiler-log.ts +1 -1
  310. package/src/adapter/resources/webgl-render-pass.ts +1 -1
  311. package/src/adapter/resources/webgl-shader.ts +2 -2
  312. package/src/adapter/webgl-device.ts +1 -1
  313. package/src/context/debug/webgl-developer-tools.ts +0 -1
  314. package/src/types/webgl.ts +4 -4
  315. package/dist/adapter/converters/device-parameters.js.map +0 -1
  316. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  317. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  318. package/dist/adapter/converters/texture-formats.js.map +0 -1
  319. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  320. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  321. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  322. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  323. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  324. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  325. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  326. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  327. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  328. package/dist/adapter/helpers/uniforms.js.map +0 -1
  329. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  330. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  331. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  333. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  334. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  335. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  336. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  337. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  338. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  339. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  340. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  341. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  342. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  343. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  344. package/dist/adapter/webgl-device.js.map +0 -1
  345. package/dist/bundle.js.map +0 -1
  346. package/dist/classic/accessor.js.map +0 -1
  347. package/dist/classic/buffer.js.map +0 -1
  348. package/dist/classic/typed-array-utils.js.map +0 -1
  349. package/dist/context/context/create-browser-context.js.map +0 -1
  350. package/dist/context/context/create-headless-context.js.map +0 -1
  351. package/dist/context/context/webgl-checks.js.map +0 -1
  352. package/dist/context/debug/spector.js.map +0 -1
  353. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  354. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  355. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  356. package/dist/context/polyfill/context-data.js.map +0 -1
  357. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  358. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  359. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  360. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  361. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  362. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  363. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  364. package/dist/index.js.map +0 -1
  365. package/dist/init.js.map +0 -1
  366. package/dist/types/webgl.js.map +0 -1
  367. package/dist/types.js.map +0 -1
@@ -1,38 +1,20 @@
1
1
  import GL from '@luma.gl/constants';
2
2
  export function getVertexFormat(type, components) {
3
- const base = getDataFormat(type);
4
-
5
- switch (components) {
6
- case 1:
7
- return base;
8
-
9
- case 2:
10
- return "".concat(base, "x2");
11
-
12
- case 3:
13
- return "".concat(base, "x3");
14
-
15
- case 4:
16
- return "".concat(base, "x4");
17
-
18
- default:
19
- throw new Error(String(components));
20
- }
3
+ const base = getDataFormat(type);
4
+ switch (components) {
5
+ case 1: return base;
6
+ case 2: return `${base}x2`;
7
+ case 3: return `${base}x3`;
8
+ case 4: return `${base}x4`;
9
+ default: throw new Error(String(components));
10
+ }
21
11
  }
22
-
23
12
  function getDataFormat(type) {
24
- switch (type) {
25
- case GL.INT:
26
- return 'sint32';
27
-
28
- case GL.UNSIGNED_INT:
29
- return 'uint32';
30
-
31
- case GL.FLOAT:
32
- return 'float32';
33
-
34
- default:
35
- throw new Error(String(type));
36
- }
13
+ switch (type) {
14
+ // TODO
15
+ case GL.INT: return 'sint32';
16
+ case GL.UNSIGNED_INT: return 'uint32';
17
+ case GL.FLOAT: return 'float32';
18
+ default: throw new Error(String(type));
19
+ }
37
20
  }
38
- //# sourceMappingURL=vertex-formats.js.map
@@ -1,112 +1,131 @@
1
- import { isWebGL2 } from '../../context/context/webgl-checks';
2
- import { isOldIE } from './is-old-ie';
3
- import { getTextureFeatures, _checkFloat32ColorAttachment } from '../converters/texture-formats';
1
+ // Feature detection for WebGL
2
+ // Provides a function that enables simple checking of which WebGL features are
3
+ // available in an WebGL1 or WebGL2 environment.
4
+ import { isWebGL2 } from '../../context/context/webgl-checks.js';
5
+ import { isOldIE } from './is-old-ie.js';
6
+ import { getTextureFeatures, _checkFloat32ColorAttachment } from '../converters/texture-formats.js';
7
+ /** Get WebGPU style feature strings */
4
8
  export function getDeviceFeatures(gl) {
5
- const features = getWebGLFeatures(gl);
6
-
7
- for (const textureFeature of getTextureFeatures(gl)) {
8
- features.add(textureFeature);
9
- }
10
-
11
- return features;
9
+ const features = getWebGLFeatures(gl);
10
+ // texture features
11
+ // features.add('texture-compression-bc');
12
+ for (const textureFeature of getTextureFeatures(gl)) {
13
+ features.add(textureFeature);
14
+ }
15
+ // TODO
16
+ // features.add('depth-clip-control'); // GPUPrimitiveState.clampDepth
17
+ // features.add('depth24unorm-stencil8'); // GPUTextureFormat 'depth24unorm-stencil8'.
18
+ // features.add('depth32float-stencil8'); // GPUTextureFormat 'depth32float-stencil8'.
19
+ // features.add('timestamp-query'); // GPUQueryType "timestamp-query"
20
+ // "indirect-first-instance"
21
+ return features;
12
22
  }
23
+ /** Extract all WebGL features */
13
24
  export function getWebGLFeatures(gl) {
14
- gl.getExtension('EXT_color_buffer_float');
15
- gl.getExtension('WEBGL_color_buffer_float');
16
- gl.getExtension('EXT_float_blend');
17
- const features = new Set();
18
-
19
- for (const feature of Object.keys(WEBGL_FEATURES)) {
20
- if (isFeatureSupported(gl, feature)) {
21
- features.add(feature);
25
+ // Enables EXT_float_blend first: https://developer.mozilla.org/en-US/docs/Web/API/EXT_float_blend
26
+ gl.getExtension('EXT_color_buffer_float');
27
+ gl.getExtension('WEBGL_color_buffer_float');
28
+ gl.getExtension('EXT_float_blend');
29
+ const features = new Set();
30
+ for (const feature of Object.keys(WEBGL_FEATURES)) {
31
+ // @ts-expect-error
32
+ if (isFeatureSupported(gl, feature)) {
33
+ // @ts-expect-error
34
+ features.add(feature);
35
+ }
22
36
  }
23
- }
24
-
25
- return features;
37
+ return features;
26
38
  }
27
-
28
39
  function isFeatureSupported(gl, feature) {
29
- const featureInfo = WEBGL_FEATURES[feature];
30
-
31
- if (!featureInfo) {
32
- return false;
33
- }
34
-
35
- const [webgl1Feature, webgl2Feature] = featureInfo || [];
36
- const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;
37
-
38
- if (typeof featureDefinition === 'boolean') {
39
- return featureDefinition;
40
- }
41
-
42
- switch (feature) {
43
- case 'texture-renderable-rgba32float-webgl':
44
- return isWebGL2(gl) ? Boolean(gl.getExtension(featureDefinition)) : _checkFloat32ColorAttachment(gl);
45
-
46
- case 'glsl-derivatives':
47
- return canCompileGLSLExtension(gl, featureDefinition);
48
-
49
- case 'glsl-frag-data':
50
- return canCompileGLSLExtension(gl, featureDefinition, {
51
- behavior: 'require'
52
- });
53
-
54
- case 'glsl-frag-depth':
55
- return canCompileGLSLExtension(gl, featureDefinition);
56
-
57
- default:
58
- return Boolean(gl.getExtension(featureDefinition));
59
- }
40
+ const featureInfo = WEBGL_FEATURES[feature];
41
+ if (!featureInfo) {
42
+ return false;
43
+ }
44
+ const [webgl1Feature, webgl2Feature] = featureInfo || [];
45
+ // Get extension name from table
46
+ const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;
47
+ // Check if the value is dependent on checking one or more extensions
48
+ if (typeof featureDefinition === 'boolean') {
49
+ return featureDefinition;
50
+ }
51
+ switch (feature) {
52
+ case 'texture-renderable-rgba32float-webgl':
53
+ return isWebGL2(gl) ? Boolean(gl.getExtension(featureDefinition)) :
54
+ _checkFloat32ColorAttachment(gl);
55
+ case 'glsl-derivatives':
56
+ return canCompileGLSLExtension(gl, featureDefinition); // TODO options
57
+ case 'glsl-frag-data':
58
+ return canCompileGLSLExtension(gl, featureDefinition, { behavior: 'require' }); // TODO options
59
+ case 'glsl-frag-depth':
60
+ return canCompileGLSLExtension(gl, featureDefinition); // TODO options
61
+ default:
62
+ return Boolean(gl.getExtension(featureDefinition));
63
+ }
60
64
  }
61
-
62
65
  const compiledGLSLExtensions = {};
66
+ /*
67
+ * Enables feature detection in IE11 due to a bug where gl.getExtension may return true
68
+ * but fail to compile when the extension is enabled in the shader. Specifically,
69
+ * the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included
70
+ * in the list of supported extensions.
71
+ * opts allows user agent to be overridden for testing
72
+ * Inputs :
73
+ * gl : WebGL context
74
+ * cap : Key of WEBGL_FEATURES object identifying the extension
75
+ * opts :
76
+ * behavior : behavior of extension to be tested, by defualt `enable` is used
77
+ * Returns : true, if shader is compiled successfully, false otherwise
78
+ */
63
79
  export function canCompileGLSLExtension(gl, extensionName, opts = {}) {
64
- if (!isOldIE(opts)) {
65
- return true;
66
- }
67
-
68
- if (extensionName in compiledGLSLExtensions) {
69
- return compiledGLSLExtensions[extensionName];
70
- }
71
-
72
- const behavior = opts.behavior || 'enable';
73
- const source = "#extension GL_".concat(extensionName, " : ").concat(behavior, "\nvoid main(void) {}");
74
- const shader = gl.createShader(gl.VERTEX_SHADER);
75
-
76
- if (!shader) {
77
- throw new Error('shader');
78
- }
79
-
80
- gl.shaderSource(shader, source);
81
- gl.compileShader(shader);
82
- const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
83
- gl.deleteShader(shader);
84
- compiledGLSLExtensions[extensionName] = canCompile;
85
- return canCompile;
80
+ if (!isOldIE(opts)) {
81
+ return true;
82
+ }
83
+ if (extensionName in compiledGLSLExtensions) {
84
+ return compiledGLSLExtensions[extensionName];
85
+ }
86
+ const behavior = opts.behavior || 'enable';
87
+ const source = `#extension GL_${extensionName} : ${behavior}\nvoid main(void) {}`;
88
+ const shader = gl.createShader(gl.VERTEX_SHADER);
89
+ if (!shader) {
90
+ throw new Error('shader');
91
+ }
92
+ gl.shaderSource(shader, source);
93
+ gl.compileShader(shader);
94
+ const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
95
+ gl.deleteShader(shader);
96
+ compiledGLSLExtensions[extensionName] = canCompile;
97
+ return canCompile;
86
98
  }
99
+ /** Defines luma.gl "feature" names and semantics
100
+ * Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension
101
+ */
87
102
  const WEBGL_FEATURES = {
88
- 'webgl': [true, true],
89
- 'webgl2': [false, true],
90
- 'timer-query-webgl': ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],
91
- 'vertex-array-object-webgl1': ['OES_vertex_array_object', true],
92
- 'instanced-rendering-webgl1': ['ANGLE_instanced_arrays', true],
93
- 'multiple-render-targets-webgl1': ['WEBGL_draw_buffers', true],
94
- 'index-uint32-webgl1': ['OES_element_index_uint', true],
95
- 'blend-minmax-webgl1': ['EXT_blend_minmax', true],
96
- 'texture-blend-float-webgl1': ['EXT_float_blend', 'EXT_float_blend'],
97
- 'texture-formats-srgb-webgl1': ['EXT_sRGB', true],
98
- 'texture-formats-depth-webgl1': ['WEBGL_depth_texture', true],
99
- 'texture-formats-float32-webgl1': ['OES_texture_float', true],
100
- 'texture-formats-float16-webgl1': ['OES_texture_half_float', true],
101
- 'texture-filter-linear-float32-webgl': ['OES_texture_float_linear', 'OES_texture_float_linear'],
102
- 'texture-filter-linear-float16-webgl': ['OES_texture_half_float_linear', 'OES_texture_half_float_linear'],
103
- 'texture-filter-anisotropic-webgl': ['EXT_texture_filter_anisotropic', 'EXT_texture_filter_anisotropic'],
104
- 'texture-renderable-rgba32float-webgl': ['WEBGL_color_buffer_float', 'EXT_color_buffer_float'],
105
- 'texture-renderable-float32-webgl': [false, 'EXT_color_buffer_float'],
106
- 'texture-renderable-float16-webgl': ['EXT_color_buffer_half_float', 'EXT_color_buffer_half_float'],
107
- 'glsl-frag-data': ['WEBGL_draw_buffers', true],
108
- 'glsl-frag-depth': ['EXT_frag_depth', true],
109
- 'glsl-derivatives': ['OES_standard_derivatives', true],
110
- 'glsl-texture-lod': ['EXT_shader_texture_lod', true]
103
+ 'webgl': [true, true],
104
+ 'webgl2': [false, true],
105
+ 'timer-query-webgl': ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],
106
+ // WEBGL1 SUPPORT
107
+ 'vertex-array-object-webgl1': ['OES_vertex_array_object', true],
108
+ 'instanced-rendering-webgl1': ['ANGLE_instanced_arrays', true],
109
+ 'multiple-render-targets-webgl1': ['WEBGL_draw_buffers', true],
110
+ 'index-uint32-webgl1': ['OES_element_index_uint', true],
111
+ 'blend-minmax-webgl1': ['EXT_blend_minmax', true],
112
+ 'texture-blend-float-webgl1': ['EXT_float_blend', 'EXT_float_blend'],
113
+ // TEXTURES, RENDERBUFFERS
114
+ 'texture-formats-srgb-webgl1': ['EXT_sRGB', true],
115
+ // TEXTURES
116
+ 'texture-formats-depth-webgl1': ['WEBGL_depth_texture', true],
117
+ 'texture-formats-float32-webgl1': ['OES_texture_float', true],
118
+ 'texture-formats-float16-webgl1': ['OES_texture_half_float', true],
119
+ 'texture-filter-linear-float32-webgl': ['OES_texture_float_linear', 'OES_texture_float_linear'],
120
+ 'texture-filter-linear-float16-webgl': ['OES_texture_half_float_linear', 'OES_texture_half_float_linear'],
121
+ 'texture-filter-anisotropic-webgl': ['EXT_texture_filter_anisotropic', 'EXT_texture_filter_anisotropic'],
122
+ // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS
123
+ 'texture-renderable-rgba32float-webgl': ['WEBGL_color_buffer_float', 'EXT_color_buffer_float'],
124
+ 'texture-renderable-float32-webgl': [false, 'EXT_color_buffer_float'],
125
+ 'texture-renderable-float16-webgl': ['EXT_color_buffer_half_float', 'EXT_color_buffer_half_float'],
126
+ // GLSL extensions
127
+ 'glsl-frag-data': ['WEBGL_draw_buffers', true],
128
+ 'glsl-frag-depth': ['EXT_frag_depth', true],
129
+ 'glsl-derivatives': ['OES_standard_derivatives', true],
130
+ 'glsl-texture-lod': ['EXT_shader_texture_lod', true]
111
131
  };
112
- //# sourceMappingURL=device-features.js.map
@@ -3,7 +3,7 @@ import GL from '@luma.gl/constants';
3
3
  /** Populate a WebGPU style device limits */
4
4
  export declare function getDeviceLimits(gl: WebGLRenderingContext): DeviceLimits;
5
5
  /** WebGL context limits */
6
- export declare type WebGLLimits = {
6
+ export type WebGLLimits = {
7
7
  [GL.ALIASED_LINE_WIDTH_RANGE]: [number, number];
8
8
  [GL.ALIASED_POINT_SIZE_RANGE]: [number, number];
9
9
  [GL.MAX_TEXTURE_SIZE]: number;
@@ -1 +1 @@
1
- {"version":3,"file":"device-limits.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/device-limits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-limits.d.ts","sourceRoot":"","sources":["../../../src/adapter/device-helpers/device-limits.ts"],"names":[],"mappings":"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"}
@@ -1,91 +1,93 @@
1
1
  import GL from '@luma.gl/constants';
2
- import { getWebGL2Context } from '../../context/context/webgl-checks';
2
+ import { getWebGL2Context } from '../../context/context/webgl-checks.js';
3
+ /** Populate a WebGPU style device limits */
3
4
  export function getDeviceLimits(gl) {
4
- const gl2 = getWebGL2Context(gl);
5
- return {
6
- maxTextureDimension1D: 0,
7
- maxTextureDimension2D: gl.getParameter(GL.MAX_TEXTURE_SIZE),
8
- maxTextureDimension3D: gl2 ? gl2.getParameter(GL.MAX_3D_TEXTURE_SIZE) : 0,
9
- maxTextureArrayLayers: gl2 ? gl2.getParameter(GL.MAX_ARRAY_TEXTURE_LAYERS) : 0,
10
- maxBindGroups: 1,
11
- maxDynamicUniformBuffersPerPipelineLayout: 0,
12
- maxDynamicStorageBuffersPerPipelineLayout: 0,
13
- maxSampledTexturesPerShaderStage: gl.getParameter(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS),
14
- maxSamplersPerShaderStage: gl.getParameter(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS),
15
- maxStorageBuffersPerShaderStage: 0,
16
- maxStorageTexturesPerShaderStage: 0,
17
- maxUniformBuffersPerShaderStage: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BUFFER_BINDINGS) : 0,
18
- maxUniformBufferBindingSize: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BLOCK_SIZE) : 0,
19
- maxStorageBufferBindingSize: 0,
20
- minUniformBufferOffsetAlignment: gl2 ? gl2.getParameter(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) : 0,
21
- minStorageBufferOffsetAlignment: 0,
22
- maxVertexBuffers: 0,
23
- maxVertexAttributes: gl.getParameter(GL.MAX_VERTEX_ATTRIBS),
24
- maxVertexBufferArrayStride: 2048,
25
- maxInterStageShaderComponents: gl2 ? gl2.getParameter(GL.MAX_VARYING_COMPONENTS) : 0,
26
- maxComputeWorkgroupStorageSize: 0,
27
- maxComputeInvocationsPerWorkgroup: 0,
28
- maxComputeWorkgroupSizeX: 0,
29
- maxComputeWorkgroupSizeY: 0,
30
- maxComputeWorkgroupSizeZ: 0,
31
- maxComputeWorkgroupsPerDimension: 0
32
- };
5
+ const gl2 = getWebGL2Context(gl);
6
+ return {
7
+ maxTextureDimension1D: 0,
8
+ maxTextureDimension2D: gl.getParameter(GL.MAX_TEXTURE_SIZE),
9
+ maxTextureDimension3D: gl2 ? gl2.getParameter(GL.MAX_3D_TEXTURE_SIZE) : 0,
10
+ maxTextureArrayLayers: gl2 ? gl2.getParameter(GL.MAX_ARRAY_TEXTURE_LAYERS) : 0,
11
+ maxBindGroups: 1,
12
+ maxDynamicUniformBuffersPerPipelineLayout: 0,
13
+ maxDynamicStorageBuffersPerPipelineLayout: 0,
14
+ maxSampledTexturesPerShaderStage: gl.getParameter(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS),
15
+ maxSamplersPerShaderStage: gl.getParameter(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS),
16
+ maxStorageBuffersPerShaderStage: 0,
17
+ maxStorageTexturesPerShaderStage: 0,
18
+ maxUniformBuffersPerShaderStage: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BUFFER_BINDINGS) : 0,
19
+ maxUniformBufferBindingSize: gl2 ? gl2.getParameter(GL.MAX_UNIFORM_BLOCK_SIZE) : 0,
20
+ maxStorageBufferBindingSize: 0,
21
+ minUniformBufferOffsetAlignment: gl2 ? gl2.getParameter(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) : 0,
22
+ minStorageBufferOffsetAlignment: 0,
23
+ maxVertexBuffers: 0,
24
+ maxVertexAttributes: gl.getParameter(GL.MAX_VERTEX_ATTRIBS),
25
+ maxVertexBufferArrayStride: 2048,
26
+ maxInterStageShaderComponents: gl2 ? gl2.getParameter(GL.MAX_VARYING_COMPONENTS) : 0,
27
+ maxComputeWorkgroupStorageSize: 0,
28
+ maxComputeInvocationsPerWorkgroup: 0,
29
+ maxComputeWorkgroupSizeX: 0,
30
+ maxComputeWorkgroupSizeY: 0,
31
+ maxComputeWorkgroupSizeZ: 0,
32
+ maxComputeWorkgroupsPerDimension: 0, // WebGL does not support compute shaders
33
+ };
33
34
  }
34
35
  export function getWebGLLimits(gl) {
35
- const gl2 = getWebGL2Context(gl);
36
-
37
- function get(pname) {
38
- return gl.getParameter(pname);
39
- }
40
-
41
- function get2(pname, defaultValue) {
42
- return gl2 ? gl2.getParameter(pname) : defaultValue || 0;
43
- }
44
-
45
- return {
46
- [GL.ALIASED_LINE_WIDTH_RANGE]: get(GL.ALIASED_LINE_WIDTH_RANGE),
47
- [GL.ALIASED_POINT_SIZE_RANGE]: get(GL.ALIASED_POINT_SIZE_RANGE),
48
- [GL.MAX_TEXTURE_SIZE]: get(GL.MAX_TEXTURE_SIZE),
49
- [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: get(GL.MAX_CUBE_MAP_TEXTURE_SIZE),
50
- [GL.MAX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_TEXTURE_IMAGE_UNITS),
51
- [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: get(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS),
52
- [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS),
53
- [GL.MAX_RENDERBUFFER_SIZE]: get(GL.MAX_RENDERBUFFER_SIZE),
54
- [GL.MAX_VARYING_VECTORS]: get(GL.MAX_VARYING_VECTORS),
55
- [GL.MAX_VERTEX_ATTRIBS]: get(GL.MAX_VERTEX_ATTRIBS),
56
- [GL.MAX_VERTEX_UNIFORM_VECTORS]: get(GL.MAX_VERTEX_UNIFORM_VECTORS),
57
- [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: get(GL.MAX_FRAGMENT_UNIFORM_VECTORS),
58
- [GL.MAX_VIEWPORT_DIMS]: get(GL.MAX_VIEWPORT_DIMS),
59
- [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: get(GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT),
60
- [GL.MAX_3D_TEXTURE_SIZE]: get2(GL.MAX_3D_TEXTURE_SIZE),
61
- [GL.MAX_ARRAY_TEXTURE_LAYERS]: get2(GL.MAX_ARRAY_TEXTURE_LAYERS),
62
- [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: get2(GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL),
63
- [GL.MAX_COLOR_ATTACHMENTS]: get2(GL.MAX_COLOR_ATTACHMENTS),
64
- [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS),
65
- [GL.MAX_COMBINED_UNIFORM_BLOCKS]: get2(GL.MAX_COMBINED_UNIFORM_BLOCKS),
66
- [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS),
67
- [GL.MAX_DRAW_BUFFERS]: get2(GL.MAX_DRAW_BUFFERS),
68
- [GL.MAX_ELEMENT_INDEX]: get2(GL.MAX_ELEMENT_INDEX),
69
- [GL.MAX_ELEMENTS_INDICES]: get2(GL.MAX_ELEMENTS_INDICES),
70
- [GL.MAX_ELEMENTS_VERTICES]: get2(GL.MAX_ELEMENTS_VERTICES),
71
- [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: get2(GL.MAX_FRAGMENT_INPUT_COMPONENTS),
72
- [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: get2(GL.MAX_FRAGMENT_UNIFORM_BLOCKS),
73
- [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_FRAGMENT_UNIFORM_COMPONENTS),
74
- [GL.MAX_SAMPLES]: get2(GL.MAX_SAMPLES),
75
- [GL.MAX_SERVER_WAIT_TIMEOUT]: get2(GL.MAX_SERVER_WAIT_TIMEOUT),
76
- [GL.MAX_TEXTURE_LOD_BIAS]: get2(GL.MAX_TEXTURE_LOD_BIAS),
77
- [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS),
78
- [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS),
79
- [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS),
80
- [GL.MAX_UNIFORM_BLOCK_SIZE]: get2(GL.MAX_UNIFORM_BLOCK_SIZE),
81
- [GL.MAX_UNIFORM_BUFFER_BINDINGS]: get2(GL.MAX_UNIFORM_BUFFER_BINDINGS),
82
- [GL.MAX_VARYING_COMPONENTS]: get2(GL.MAX_VARYING_COMPONENTS),
83
- [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: get2(GL.MAX_VERTEX_OUTPUT_COMPONENTS),
84
- [GL.MAX_VERTEX_UNIFORM_BLOCKS]: get2(GL.MAX_VERTEX_UNIFORM_BLOCKS),
85
- [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_VERTEX_UNIFORM_COMPONENTS),
86
- [GL.MIN_PROGRAM_TEXEL_OFFSET]: get2(GL.MIN_PROGRAM_TEXEL_OFFSET),
87
- [GL.MAX_PROGRAM_TEXEL_OFFSET]: get2(GL.MAX_PROGRAM_TEXEL_OFFSET),
88
- [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: get2(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT)
89
- };
36
+ const gl2 = getWebGL2Context(gl);
37
+ function get(pname) {
38
+ return gl.getParameter(pname);
39
+ }
40
+ function get2(pname, defaultValue) {
41
+ return gl2 ? gl2.getParameter(pname) : (defaultValue || 0);
42
+ }
43
+ // function getMaxAnistropy() {
44
+ // const extension = gl.getExtension('EXT_texture_filter_anisotropic');
45
+ // }
46
+ return {
47
+ [GL.ALIASED_LINE_WIDTH_RANGE]: get(GL.ALIASED_LINE_WIDTH_RANGE),
48
+ [GL.ALIASED_POINT_SIZE_RANGE]: get(GL.ALIASED_POINT_SIZE_RANGE),
49
+ [GL.MAX_TEXTURE_SIZE]: get(GL.MAX_TEXTURE_SIZE),
50
+ [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: get(GL.MAX_CUBE_MAP_TEXTURE_SIZE),
51
+ [GL.MAX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_TEXTURE_IMAGE_UNITS),
52
+ [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: get(GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS),
53
+ [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: get(GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS),
54
+ [GL.MAX_RENDERBUFFER_SIZE]: get(GL.MAX_RENDERBUFFER_SIZE),
55
+ [GL.MAX_VARYING_VECTORS]: get(GL.MAX_VARYING_VECTORS),
56
+ [GL.MAX_VERTEX_ATTRIBS]: get(GL.MAX_VERTEX_ATTRIBS),
57
+ [GL.MAX_VERTEX_UNIFORM_VECTORS]: get(GL.MAX_VERTEX_UNIFORM_VECTORS),
58
+ [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: get(GL.MAX_FRAGMENT_UNIFORM_VECTORS),
59
+ [GL.MAX_VIEWPORT_DIMS]: get(GL.MAX_VIEWPORT_DIMS),
60
+ // Extensions
61
+ [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: get(GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT),
62
+ // WebGL2 Limits
63
+ [GL.MAX_3D_TEXTURE_SIZE]: get2(GL.MAX_3D_TEXTURE_SIZE),
64
+ [GL.MAX_ARRAY_TEXTURE_LAYERS]: get2(GL.MAX_ARRAY_TEXTURE_LAYERS),
65
+ [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: get2(GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL),
66
+ [GL.MAX_COLOR_ATTACHMENTS]: get2(GL.MAX_COLOR_ATTACHMENTS),
67
+ [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS),
68
+ [GL.MAX_COMBINED_UNIFORM_BLOCKS]: get2(GL.MAX_COMBINED_UNIFORM_BLOCKS),
69
+ [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS),
70
+ [GL.MAX_DRAW_BUFFERS]: get2(GL.MAX_DRAW_BUFFERS),
71
+ [GL.MAX_ELEMENT_INDEX]: get2(GL.MAX_ELEMENT_INDEX),
72
+ [GL.MAX_ELEMENTS_INDICES]: get2(GL.MAX_ELEMENTS_INDICES),
73
+ [GL.MAX_ELEMENTS_VERTICES]: get2(GL.MAX_ELEMENTS_VERTICES),
74
+ [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: get2(GL.MAX_FRAGMENT_INPUT_COMPONENTS),
75
+ [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: get2(GL.MAX_FRAGMENT_UNIFORM_BLOCKS),
76
+ [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: get2(GL.MAX_FRAGMENT_UNIFORM_COMPONENTS),
77
+ [GL.MAX_SAMPLES]: get2(GL.MAX_SAMPLES),
78
+ [GL.MAX_SERVER_WAIT_TIMEOUT]: get2(GL.MAX_SERVER_WAIT_TIMEOUT),
79
+ [GL.MAX_TEXTURE_LOD_BIAS]: get2(GL.MAX_TEXTURE_LOD_BIAS),
80
+ [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS),
81
+ [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS),
82
+ [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: get2(GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS),
83
+ [GL.MAX_UNIFORM_BLOCK_SIZE]: get2(GL.MAX_UNIFORM_BLOCK_SIZE),
84
+ [GL.MAX_UNIFORM_BUFFER_BINDINGS]: get2(GL.MAX_UNIFORM_BUFFER_BINDINGS),
85
+ [GL.MAX_VARYING_COMPONENTS]: get2(GL.MAX_VARYING_COMPONENTS),
86
+ [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: get2(GL.MAX_VERTEX_OUTPUT_COMPONENTS),
87
+ [GL.MAX_VERTEX_UNIFORM_BLOCKS]: get2(GL.MAX_VERTEX_UNIFORM_BLOCKS),
88
+ [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: get2(GL.MAX_VERTEX_UNIFORM_COMPONENTS),
89
+ [GL.MIN_PROGRAM_TEXEL_OFFSET]: get2(GL.MIN_PROGRAM_TEXEL_OFFSET),
90
+ [GL.MAX_PROGRAM_TEXEL_OFFSET]: get2(GL.MAX_PROGRAM_TEXEL_OFFSET),
91
+ [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: get2(GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT) // GLint
92
+ };
90
93
  }
91
- //# sourceMappingURL=device-limits.js.map
@@ -1,48 +1,47 @@
1
1
  import GL from '@luma.gl/constants';
2
- import { isWebGL2 } from '../../context/context/webgl-checks';
2
+ import { isWebGL2 } from '../../context/context/webgl-checks.js';
3
+ /** @returns strings identifying the GPU vendor and driver. */
3
4
  export function getDeviceInfo(gl) {
4
- const vendorMasked = gl.getParameter(GL.VENDOR);
5
- const rendererMasked = gl.getParameter(GL.RENDERER);
6
- const ext = gl.getExtension('WEBGL_debug_renderer_info');
7
- const vendorUnmasked = gl.getParameter(ext ? ext.UNMASKED_VENDOR_WEBGL : GL.VENDOR);
8
- const rendererUnmasked = gl.getParameter(ext ? ext.UNMASKED_RENDERER_WEBGL : GL.RENDERER);
9
- const vendor = vendorUnmasked || vendorMasked;
10
- const renderer = rendererUnmasked || rendererMasked;
11
- const gpu = identifyGPUVendor(vendor, renderer);
12
- return {
13
- type: isWebGL2(gl) ? 'webgl2' : 'webgl',
14
- gpu,
15
- vendor: vendorUnmasked || vendorMasked,
16
- renderer: rendererUnmasked || rendererMasked,
17
- version: gl.getParameter(GL.VERSION),
18
- shadingLanguages: ['glsl'],
19
- shadingLanguageVersions: {
20
- 'glsl': gl.getParameter(GL.SHADING_LANGUAGE_VERSION)
21
- }
22
- };
5
+ const vendorMasked = gl.getParameter(GL.VENDOR);
6
+ const rendererMasked = gl.getParameter(GL.RENDERER);
7
+ // Get unmasked strings if available
8
+ // https://www.khronos.org/registry/webgl/extensions/WEBGL_debug_renderer_info/
9
+ const ext = gl.getExtension('WEBGL_debug_renderer_info');
10
+ const vendorUnmasked = gl.getParameter(ext ? ext.UNMASKED_VENDOR_WEBGL : GL.VENDOR);
11
+ const rendererUnmasked = gl.getParameter(ext ? ext.UNMASKED_RENDERER_WEBGL : GL.RENDERER);
12
+ const vendor = vendorUnmasked || vendorMasked;
13
+ const renderer = rendererUnmasked || rendererMasked;
14
+ const gpu = identifyGPUVendor(vendor, renderer);
15
+ return {
16
+ type: isWebGL2(gl) ? 'webgl2' : 'webgl',
17
+ gpu,
18
+ vendor: vendorUnmasked || vendorMasked,
19
+ renderer: rendererUnmasked || rendererMasked,
20
+ version: gl.getParameter(GL.VERSION),
21
+ shadingLanguages: ['glsl'],
22
+ shadingLanguageVersions: {
23
+ 'glsl': gl.getParameter(GL.SHADING_LANGUAGE_VERSION)
24
+ }
25
+ };
23
26
  }
24
-
25
27
  function identifyGPUVendor(vendor, renderer) {
26
- if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {
27
- return 'nvidia';
28
- }
29
-
30
- if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {
31
- return 'intel';
32
- }
33
-
34
- if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
35
- return 'apple';
36
- }
37
-
38
- if (vendor.match(/AMD/i) || renderer.match(/AMD/i) || vendor.match(/ATI/i) || renderer.match(/ATI/i)) {
39
- return 'amd';
40
- }
41
-
42
- if (vendor.match(/SwiftShader/i) || renderer.match(/SwiftShader/i)) {
43
- return 'software';
44
- }
45
-
46
- return 'unknown';
28
+ if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {
29
+ return 'nvidia';
30
+ }
31
+ if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {
32
+ return 'intel';
33
+ }
34
+ if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
35
+ return 'apple';
36
+ }
37
+ if (vendor.match(/AMD/i) ||
38
+ renderer.match(/AMD/i) ||
39
+ vendor.match(/ATI/i) ||
40
+ renderer.match(/ATI/i)) {
41
+ return 'amd';
42
+ }
43
+ if (vendor.match(/SwiftShader/i) || renderer.match(/SwiftShader/i)) {
44
+ return 'software';
45
+ }
46
+ return 'unknown';
47
47
  }
48
- //# sourceMappingURL=get-device-info.js.map
@@ -1,8 +1,11 @@
1
+ // opts allows user agent to be overridden for testing
1
2
  export function isOldIE(opts = {}) {
2
- const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};
3
- const userAgent = opts.userAgent || navigator.userAgent || '';
4
- const isMSIE = userAgent.indexOf('MSIE ') !== -1;
5
- const isTrident = userAgent.indexOf('Trident/') !== -1;
6
- return isMSIE || isTrident;
3
+ const navigator = typeof window !== 'undefined' ? window.navigator || {} : {};
4
+ // @ts-expect-error
5
+ const userAgent = opts.userAgent || navigator.userAgent || '';
6
+ // We only care about older versions of IE (IE 11 and below). Newer versions of IE (Edge)
7
+ // have much better web standards support.
8
+ const isMSIE = userAgent.indexOf('MSIE ') !== -1;
9
+ const isTrident = userAgent.indexOf('Trident/') !== -1;
10
+ return isMSIE || isTrident;
7
11
  }
8
- //# sourceMappingURL=is-old-ie.js.map