@luma.gl/webgl 9.0.0-alpha.2 → 9.0.0-alpha.21

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 (468) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +11 -1
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +17 -35
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/renderbuffer-formats.d.ts +2 -2
  6. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/renderbuffer-formats.js +2 -7
  8. package/dist/adapter/converters/renderbuffer-formats.js.map +1 -1
  9. package/dist/adapter/converters/sampler-parameters.d.ts +4 -4
  10. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  11. package/dist/adapter/converters/sampler-parameters.js +19 -55
  12. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  13. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  14. package/dist/adapter/converters/texture-formats.js +13 -66
  15. package/dist/adapter/converters/texture-formats.js.map +1 -1
  16. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  17. package/dist/adapter/converters/vertex-formats.js +2 -8
  18. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  19. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  20. package/dist/adapter/device-helpers/device-features.js +13 -20
  21. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-limits.js +1 -4
  23. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  24. package/dist/adapter/device-helpers/get-device-info.js +8 -10
  25. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  26. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  27. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  28. package/dist/adapter/helpers/attribute-utils.js +0 -17
  29. package/dist/adapter/helpers/attribute-utils.js.map +1 -1
  30. package/dist/adapter/helpers/get-shader-info.d.ts +9 -0
  31. package/dist/adapter/helpers/get-shader-info.d.ts.map +1 -0
  32. package/dist/adapter/helpers/get-shader-info.js +25 -0
  33. package/dist/adapter/helpers/get-shader-info.js.map +1 -0
  34. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  35. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  36. package/dist/adapter/helpers/get-shader-layout.js +41 -67
  37. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  38. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  39. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  40. package/dist/adapter/helpers/parse-shader-compiler-log.js +0 -7
  41. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  42. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  43. package/dist/adapter/helpers/set-uniform.js +1 -31
  44. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  45. package/dist/adapter/helpers/uniforms.d.ts +1 -1
  46. package/dist/adapter/helpers/uniforms.d.ts.map +1 -1
  47. package/dist/adapter/helpers/uniforms.js +4 -14
  48. package/dist/adapter/helpers/uniforms.js.map +1 -1
  49. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  50. package/dist/adapter/objects/constants-to-keys.js +0 -7
  51. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  52. package/dist/adapter/objects/webgl-renderbuffer.d.ts +3 -3
  53. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  54. package/dist/adapter/objects/webgl-renderbuffer.js +6 -22
  55. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  56. package/dist/adapter/objects/webgl-resource.d.ts +3 -5
  57. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  58. package/dist/adapter/objects/webgl-resource.js +15 -68
  59. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  60. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +6 -6
  61. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
  62. package/dist/adapter/objects/webgl-vertex-array-object.js +7 -17
  63. package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
  64. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  65. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-buffer.js +18 -49
  67. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  68. package/dist/adapter/resources/webgl-command-buffer.d.ts +2 -2
  69. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-command-buffer.js +3 -18
  71. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  72. package/dist/adapter/resources/webgl-command-encoder.d.ts +3 -3
  73. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  74. package/dist/adapter/resources/webgl-command-encoder.js +2 -15
  75. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  76. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  77. package/dist/adapter/resources/webgl-framebuffer.d.ts +16 -16
  78. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-framebuffer.js +17 -75
  80. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  81. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -3
  82. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-render-pass.js +3 -8
  84. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  85. package/dist/adapter/resources/webgl-render-pipeline.d.ts +5 -5
  86. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  87. package/dist/adapter/resources/webgl-render-pipeline.js +51 -140
  88. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  89. package/dist/adapter/resources/webgl-sampler.d.ts +5 -4
  90. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-sampler.js +5 -13
  92. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  93. package/dist/adapter/resources/webgl-shader.d.ts +3 -4
  94. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  95. package/dist/adapter/resources/webgl-shader.js +8 -21
  96. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  97. package/dist/adapter/resources/webgl-texture.d.ts +26 -26
  98. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  99. package/dist/adapter/resources/webgl-texture.js +66 -183
  100. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  101. package/dist/adapter/webgl-canvas-context.d.ts +3 -3
  102. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  103. package/dist/adapter/webgl-canvas-context.js +6 -19
  104. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  105. package/dist/adapter/webgl-device.d.ts +53 -37
  106. package/dist/adapter/webgl-device.d.ts.map +1 -1
  107. package/dist/adapter/webgl-device.js +108 -109
  108. package/dist/adapter/webgl-device.js.map +1 -1
  109. package/dist/classic/accessor.d.ts +1 -1
  110. package/dist/classic/accessor.d.ts.map +1 -1
  111. package/dist/classic/accessor.js +12 -36
  112. package/dist/classic/accessor.js.map +1 -1
  113. package/dist/classic/buffer.d.ts +3 -4
  114. package/dist/classic/buffer.d.ts.map +1 -1
  115. package/dist/classic/buffer.js +30 -87
  116. package/dist/classic/buffer.js.map +1 -1
  117. package/dist/classic/typed-array-utils.d.ts +1 -1
  118. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  119. package/dist/classic/typed-array-utils.js +0 -20
  120. package/dist/classic/typed-array-utils.js.map +1 -1
  121. package/dist/context/context/{create-context.d.ts → create-browser-context.d.ts} +2 -1
  122. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  123. package/dist/context/context/{create-context.js → create-browser-context.js} +19 -15
  124. package/dist/context/context/create-browser-context.js.map +1 -0
  125. package/dist/context/context/create-headless-context.d.ts +9 -0
  126. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  127. package/dist/context/context/create-headless-context.js +42 -0
  128. package/dist/context/context/create-headless-context.js.map +1 -0
  129. package/dist/context/context/webgl-checks.js +0 -3
  130. package/dist/context/context/webgl-checks.js.map +1 -1
  131. package/dist/context/debug/spector.d.ts +1 -0
  132. package/dist/context/debug/spector.d.ts.map +1 -1
  133. package/dist/context/debug/spector.js +7 -19
  134. package/dist/context/debug/spector.js.map +1 -1
  135. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  136. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  137. package/dist/context/debug/webgl-developer-tools.js +8 -32
  138. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  139. package/dist/context/parameters/unified-parameter-api.d.ts +6 -5
  140. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  141. package/dist/context/parameters/unified-parameter-api.js +8 -18
  142. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  143. package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
  144. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  145. package/dist/context/parameters/webgl-parameter-tables.js +16 -34
  146. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  147. package/dist/context/polyfill/context-data.d.ts +13 -0
  148. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  149. package/dist/context/polyfill/context-data.js +12 -0
  150. package/dist/context/polyfill/context-data.js.map +1 -0
  151. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  152. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  153. package/dist/context/polyfill/get-parameter-polyfill.js +1 -6
  154. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  155. package/dist/context/polyfill/polyfill-context.js +20 -28
  156. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  157. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  158. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  159. package/dist/context/polyfill/polyfill-table.js +8 -30
  160. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  161. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  162. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -70
  163. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  164. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  165. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  166. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  167. package/dist/context/state-tracker/track-context-state.js +15 -50
  168. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  169. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  170. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  171. package/dist/context/state-tracker/with-parameters.js +7 -9
  172. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  173. package/dist/dist.dev.js +9204 -0
  174. package/dist/index.cjs +5948 -0
  175. package/dist/index.d.ts +19 -19
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +24 -26
  178. package/dist/index.js.map +1 -1
  179. package/dist/types/webgl.d.ts +8 -7
  180. package/dist/types/webgl.d.ts.map +1 -1
  181. package/dist/types/webgl.js.map +1 -1
  182. package/dist/types.js.map +1 -1
  183. package/dist.min.js +36 -0
  184. package/package.json +18 -9
  185. package/src/.DS_Store +0 -0
  186. package/src/adapter/.DS_Store +0 -0
  187. package/src/adapter/converters/device-parameters.ts +45 -16
  188. package/src/adapter/converters/renderbuffer-formats.ts +1 -3
  189. package/src/adapter/converters/sampler-parameters.ts +18 -7
  190. package/src/adapter/converters/texture-formats.ts +18 -16
  191. package/src/adapter/converters/vertex-formats.ts +1 -0
  192. package/src/adapter/device-helpers/device-features.ts +9 -2
  193. package/src/adapter/device-helpers/device-limits.ts +1 -1
  194. package/src/adapter/device-helpers/get-device-info.ts +12 -8
  195. package/src/adapter/helpers/get-shader-info.ts +37 -0
  196. package/src/adapter/helpers/get-shader-layout.ts +59 -37
  197. package/src/adapter/helpers/parse-shader-compiler-log.ts +2 -2
  198. package/src/adapter/helpers/set-uniform.ts +3 -1
  199. package/src/adapter/helpers/uniforms.ts +21 -10
  200. package/src/adapter/objects/constants-to-keys.ts +4 -1
  201. package/src/adapter/objects/webgl-renderbuffer.ts +8 -8
  202. package/src/adapter/objects/webgl-resource.ts +8 -13
  203. package/src/adapter/objects/webgl-vertex-array-object.ts +10 -10
  204. package/src/adapter/resources/webgl-buffer.ts +16 -16
  205. package/src/adapter/resources/webgl-command-buffer.ts +3 -3
  206. package/src/adapter/resources/webgl-command-encoder.ts +8 -8
  207. package/src/adapter/resources/webgl-external-texture.ts +1 -1
  208. package/src/adapter/resources/webgl-framebuffer.ts +36 -33
  209. package/src/adapter/resources/webgl-render-pass.ts +4 -3
  210. package/src/adapter/resources/webgl-render-pipeline.ts +89 -77
  211. package/src/adapter/resources/webgl-sampler.ts +12 -6
  212. package/src/adapter/resources/webgl-shader.ts +10 -9
  213. package/src/adapter/resources/webgl-texture.ts +55 -45
  214. package/src/adapter/webgl-canvas-context.ts +8 -9
  215. package/src/adapter/webgl-device.ts +153 -69
  216. package/src/classic/accessor.ts +2 -15
  217. package/src/classic/buffer.ts +18 -25
  218. package/src/classic/typed-array-utils.ts +4 -2
  219. package/src/context/.DS_Store +0 -0
  220. package/src/context/context/{create-context.ts → create-browser-context.ts} +17 -7
  221. package/src/context/context/create-headless-context.ts +48 -0
  222. package/src/context/debug/spector.ts +6 -5
  223. package/src/context/debug/webgl-developer-tools.ts +13 -13
  224. package/src/context/parameters/unified-parameter-api.ts +18 -12
  225. package/src/context/parameters/webgl-parameter-tables.ts +113 -94
  226. package/src/context/polyfill/context-data.ts +27 -0
  227. package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
  228. package/src/context/polyfill/polyfill-context.ts +6 -8
  229. package/src/context/polyfill/polyfill-table.ts +16 -14
  230. package/src/context/polyfill/polyfill-vertex-array-object.ts +2 -0
  231. package/src/context/state-tracker/track-context-state.ts +13 -12
  232. package/src/context/state-tracker/with-parameters.ts +8 -2
  233. package/src/index.ts +28 -26
  234. package/src/types/webgl.ts +10 -7
  235. package/dist/bundle.d.ts +0 -2
  236. package/dist/bundle.d.ts.map +0 -1
  237. package/dist/bundle.js +0 -5
  238. package/dist/bundle.js.map +0 -1
  239. package/dist/context/context/context-state.d.ts +0 -18
  240. package/dist/context/context/context-state.d.ts.map +0 -1
  241. package/dist/context/context/context-state.js +0 -26
  242. package/dist/context/context/context-state.js.map +0 -1
  243. package/dist/context/context/create-context.d.ts.map +0 -1
  244. package/dist/context/context/create-context.js.map +0 -1
  245. package/dist/context/context/device-pixels.d.ts +0 -25
  246. package/dist/context/context/device-pixels.d.ts.map +0 -1
  247. package/dist/context/context/device-pixels.js +0 -98
  248. package/dist/context/context/device-pixels.js.map +0 -1
  249. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  250. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  251. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  252. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  253. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  254. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  255. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  256. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  257. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  258. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  259. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  260. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  261. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  262. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  263. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  264. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  265. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  266. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  267. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  268. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  269. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  270. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  271. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  272. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  273. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  274. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  275. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  276. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  277. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  278. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  279. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  280. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  281. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  282. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  283. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  284. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  285. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  286. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  287. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  288. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  289. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  290. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  291. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  292. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  293. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  294. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  295. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  296. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  297. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  298. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  299. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  300. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  301. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  302. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  303. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  304. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  305. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  306. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  307. package/dist/es5/adapter/webgl-device.js +0 -399
  308. package/dist/es5/adapter/webgl-device.js.map +0 -1
  309. package/dist/es5/bundle.js +0 -7
  310. package/dist/es5/bundle.js.map +0 -1
  311. package/dist/es5/classic/accessor.js +0 -181
  312. package/dist/es5/classic/accessor.js.map +0 -1
  313. package/dist/es5/classic/buffer.js +0 -470
  314. package/dist/es5/classic/buffer.js.map +0 -1
  315. package/dist/es5/classic/typed-array-utils.js +0 -126
  316. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  317. package/dist/es5/context/context/context-state.js +0 -31
  318. package/dist/es5/context/context/context-state.js.map +0 -1
  319. package/dist/es5/context/context/create-context.js +0 -69
  320. package/dist/es5/context/context/create-context.js.map +0 -1
  321. package/dist/es5/context/context/device-pixels.js +0 -115
  322. package/dist/es5/context/context/device-pixels.js.map +0 -1
  323. package/dist/es5/context/context/webgl-checks.js +0 -54
  324. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  325. package/dist/es5/context/debug/spector.js +0 -133
  326. package/dist/es5/context/debug/spector.js.map +0 -1
  327. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  328. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  329. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  330. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  331. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  332. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  333. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  334. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  335. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  336. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  337. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  338. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  339. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  340. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  341. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  342. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  343. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  344. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  345. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  346. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  347. package/dist/es5/index.js +0 -276
  348. package/dist/es5/index.js.map +0 -1
  349. package/dist/es5/init.js +0 -10
  350. package/dist/es5/init.js.map +0 -1
  351. package/dist/es5/types/webgl.js +0 -6
  352. package/dist/es5/types/webgl.js.map +0 -1
  353. package/dist/es5/types.js +0 -2
  354. package/dist/es5/types.js.map +0 -1
  355. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  356. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  357. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  358. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  359. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  360. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  361. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  362. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  363. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  364. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  365. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  366. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  367. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  368. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  369. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  370. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  371. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  372. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  373. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  374. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  375. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  376. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  377. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  378. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  379. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  380. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  381. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  382. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  383. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  384. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  385. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  386. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  387. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  388. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  389. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  390. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  391. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  392. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  393. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  394. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  395. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  396. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  397. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  398. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  399. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  400. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  401. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  402. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  403. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  404. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  405. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  406. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  407. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  408. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  409. package/dist/esm/adapter/resources/webgl-texture.js +0 -831
  410. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  411. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  412. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  413. package/dist/esm/adapter/webgl-device.js +0 -280
  414. package/dist/esm/adapter/webgl-device.js.map +0 -1
  415. package/dist/esm/bundle.js +0 -5
  416. package/dist/esm/bundle.js.map +0 -1
  417. package/dist/esm/classic/accessor.js +0 -144
  418. package/dist/esm/classic/accessor.js.map +0 -1
  419. package/dist/esm/classic/buffer.js +0 -384
  420. package/dist/esm/classic/buffer.js.map +0 -1
  421. package/dist/esm/classic/typed-array-utils.js +0 -112
  422. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  423. package/dist/esm/context/context/context-state.js +0 -26
  424. package/dist/esm/context/context/context-state.js.map +0 -1
  425. package/dist/esm/context/context/create-context.js +0 -49
  426. package/dist/esm/context/context/create-context.js.map +0 -1
  427. package/dist/esm/context/context/device-pixels.js +0 -98
  428. package/dist/esm/context/context/device-pixels.js.map +0 -1
  429. package/dist/esm/context/context/webgl-checks.js +0 -34
  430. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  431. package/dist/esm/context/debug/spector.js +0 -76
  432. package/dist/esm/context/debug/spector.js.map +0 -1
  433. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  434. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  435. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  436. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  437. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  438. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  439. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  440. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  441. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  442. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  443. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  444. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  445. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  446. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  447. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  448. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  449. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  450. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  451. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  452. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  453. package/dist/esm/index.js +0 -27
  454. package/dist/esm/index.js.map +0 -1
  455. package/dist/esm/init.js +0 -4
  456. package/dist/esm/init.js.map +0 -1
  457. package/dist/esm/types/webgl.js +0 -2
  458. package/dist/esm/types/webgl.js.map +0 -1
  459. package/dist/esm/types.js +0 -2
  460. package/dist/esm/types.js.map +0 -1
  461. package/dist/init.d.ts +0 -2
  462. package/dist/init.d.ts.map +0 -1
  463. package/dist/init.js +0 -4
  464. package/dist/init.js.map +0 -1
  465. package/src/bundle.ts +0 -4
  466. package/src/context/context/context-state.ts +0 -41
  467. package/src/context/context/device-pixels.ts +0 -152
  468. package/src/init.ts +0 -4
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@luma.gl/webgl",
3
- "version": "9.0.0-alpha.2",
3
+ "version": "9.0.0-alpha.21",
4
4
  "description": "WebGL2 adapter for the luma.gl API",
5
+ "type": "module",
5
6
  "license": "MIT",
6
7
  "publishConfig": {
7
8
  "access": "public"
@@ -16,12 +17,20 @@
16
17
  "animation",
17
18
  "3d"
18
19
  ],
19
- "types": "src/index.ts",
20
- "main": "dist/index.js",
20
+ "types": "dist/index.d.ts",
21
+ "main": "dist/index.cjs",
21
22
  "module": "dist/index.js",
23
+ "exports": {
24
+ ".": {
25
+ "import": "./dist/index.js",
26
+ "require": "./dist/index.cjs",
27
+ "types": "./dist/index.d.ts"
28
+ }
29
+ },
22
30
  "files": [
23
31
  "src",
24
32
  "dist",
33
+ "dist.min.js",
25
34
  "README.md"
26
35
  ],
27
36
  "sideEffects": false,
@@ -30,14 +39,14 @@
30
39
  "gl/wrap": false
31
40
  },
32
41
  "scripts": {
33
- "pre-build": "npm run build-bundle",
34
- "build-bundle": "webpack --display=minimal --config ../../scripts/bundle.config.js"
42
+ "build-bundle": "ocular-bundle ./src/index.ts",
43
+ "pre-build": "npm run build-bundle && npm run build-bundle -- --env=dev"
35
44
  },
36
45
  "dependencies": {
37
46
  "@babel/runtime": "^7.0.0",
38
- "@luma.gl/api": "9.0.0-alpha.2",
39
- "@luma.gl/constants": "9.0.0-alpha.2",
40
- "@probe.gl/env": "^3.5.0"
47
+ "@luma.gl/api": "9.0.0-alpha.21",
48
+ "@luma.gl/constants": "9.0.0-alpha.21",
49
+ "@probe.gl/env": "^4.0.2"
41
50
  },
42
- "gitHead": "81e93840f31f0e32f86dfea6b576acf2c2d9caec"
51
+ "gitHead": "7ee95470a6a2f62753201beb0c36b00e37c70455"
43
52
  }
package/src/.DS_Store ADDED
Binary file
Binary file
@@ -3,7 +3,9 @@ import GL from '@luma.gl/constants';
3
3
  import type { GLParameters } from '../../types/webgl';
4
4
  import {pushContextState, popContextState} from '../../context/state-tracker/track-context-state';
5
5
  import {setParameters} from '../../context/parameters/unified-parameter-api';
6
- import WebGLDevice from '../webgl-device';
6
+ import {WebGLDevice} from '../webgl-device';
7
+
8
+ /* eslint-disable no-unused-expressions */ // For expression ? gl.enable() : gl.disable()
7
9
 
8
10
  /**
9
11
  * Execute a function with a set of temporary WebGL parameter overrides
@@ -12,8 +14,9 @@ import WebGLDevice from '../webgl-device';
12
14
  * - Executes supplied function
13
15
  * - Restores parameters
14
16
  * - Returns the return value of the supplied function
17
+ * @deprecated use withDeviceParameters instead
15
18
  */
16
- export function withDeviceParameters<T = unknown>(device: Device, parameters: Parameters & GLParameters, func: (device?: Device) => T): T {
19
+ export function withGLParameters<T = unknown>(device: Device, parameters: GLParameters, func: (device?: Device) => T): T {
17
20
  if (isObjectEmpty(parameters)) {
18
21
  // Avoid setting state if no parameters provided. Just call and return
19
22
  return func(device);
@@ -24,6 +27,31 @@ export function withDeviceParameters<T = unknown>(device: Device, parameters: Pa
24
27
  pushContextState(device.gl);
25
28
  try {
26
29
  setParameters(device, parameters);
30
+ return func(device);
31
+ } finally {
32
+ // @ts-expect-error
33
+ popContextState(device.gl);
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Execute a function with a set of temporary WebGL parameter overrides
39
+ * - Saves current "global" WebGL context settings
40
+ * - Sets the supplies WebGL context parameters,
41
+ * - Executes supplied function
42
+ * - Restores parameters
43
+ * - Returns the return value of the supplied function
44
+ */
45
+ export function withDeviceParameters<T = unknown>(device: Device, parameters: Parameters, func: (device?: Device) => T): T {
46
+ if (isObjectEmpty(parameters)) {
47
+ // Avoid setting state if no parameters provided. Just call and return
48
+ return func(device);
49
+ }
50
+
51
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions
52
+ // @ts-expect-error
53
+ pushContextState(device.gl);
54
+ try {
27
55
  setDeviceParameters(device, parameters);
28
56
  return func(device);
29
57
  } finally {
@@ -36,7 +64,7 @@ export function withDeviceParameters<T = unknown>(device: Device, parameters: Pa
36
64
  /** Set WebGPU Style Parameters */
37
65
  export function setDeviceParameters(device: Device, parameters: Parameters) {
38
66
  const webglDevice = WebGLDevice.attach(device);
39
- const {gl, gl2} = webglDevice;
67
+ const {gl} = webglDevice;
40
68
 
41
69
  // RASTERIZATION SETTINGS
42
70
  if (parameters.cullMode) {
@@ -76,7 +104,8 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
76
104
  gl.depthMask(mapBoolean('depthWriteEnabled', parameters.depthWriteEnabled));
77
105
  }
78
106
 
79
- if (parameters.depthCompare) {
107
+ if (parameters.depthCompare) {
108
+
80
109
  parameters.depthCompare !== 'always' ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST);
81
110
  gl.depthFunc(convertCompareFunction('depthCompare', parameters.depthCompare));
82
111
  }
@@ -101,7 +130,7 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
101
130
  gl.stencilFuncSeparate(GL.BACK, glValue, 0, mask);
102
131
  }
103
132
 
104
- if (parameters.stencilPassOperation) {
133
+ if (parameters.stencilPassOperation && parameters.stencilFailOperation && parameters.stencilDepthFailOperation) {
105
134
  const dppass = convertStencilOperation('stencilPassOperation', parameters.stencilPassOperation);
106
135
  const sfail = convertStencilOperation('stencilFailOperation', parameters.stencilFailOperation);
107
136
  const dpfail = convertStencilOperation('stencilDepthFailOperation', parameters.stencilDepthFailOperation);
@@ -198,16 +227,16 @@ function convertStencilOperation(parameter: string, value: StencilOperation): GL
198
227
  });
199
228
  }
200
229
 
201
- function convertBlendOperationToEquation(parameter, value): number {
202
- return map(parameter, value, {
203
- 'add': GL.FUNC_ADD,
204
- 'sub': GL.FUNC_SUBTRACT,
205
- 'reverse-subtract': GL.FUNC_REVERSE_SUBTRACT,
206
- // When using a WebGL 2 context, the following values are available additionally:
207
- 'min': GL.MIN,
208
- 'max': GL.MAX
209
- });
210
- }
230
+ // function convertBlendOperationToEquation(parameter: string, value: string): number {
231
+ // return map(parameter, value, {
232
+ // 'add': GL.FUNC_ADD,
233
+ // 'sub': GL.FUNC_SUBTRACT,
234
+ // 'reverse-subtract': GL.FUNC_REVERSE_SUBTRACT,
235
+ // // When using a WebGL 2 context, the following values are available additionally:
236
+ // 'min': GL.MIN,
237
+ // 'max': GL.MAX
238
+ // });
239
+ // }
211
240
 
212
241
  function message(parameter: string, value: any): string {
213
242
  return `Illegal parameter ${value} for ${parameter}`;
@@ -220,6 +249,6 @@ function map(parameter: string, value: any, valueMap: Record<string, any>): any
220
249
  return valueMap[value];
221
250
  }
222
251
 
223
- function mapBoolean(parameter, value) {
252
+ function mapBoolean(parameter: string, value: boolean): boolean {
224
253
  return value;
225
254
  }
@@ -34,7 +34,7 @@ type RenderbufferFormat = {
34
34
  ext?: string;
35
35
  };
36
36
 
37
- const RENDERBUFFER_FORMATS: Record<string, RenderbufferFormat> = {
37
+ export const RENDERBUFFER_FORMATS: Record<string, RenderbufferFormat> = {
38
38
  [GL.DEPTH_COMPONENT16]: {bpp: 2}, // 16 depth bits.
39
39
  [GL.DEPTH_COMPONENT24]: {gl2: true, bpp: 3},
40
40
  [GL.DEPTH_COMPONENT32F]: {gl2: true, bpp: 4},
@@ -88,5 +88,3 @@ const RENDERBUFFER_FORMATS: Record<string, RenderbufferFormat> = {
88
88
  // [GL.RGBA32F]: {ext: EXT_FLOAT_WEBGL2, gl1: EXT_FLOAT_WEBGL1},
89
89
  [GL.R11F_G11F_B10F]: {ext: EXT_FLOAT_WEBGL2, bpp: 4}
90
90
  };
91
-
92
- export default RENDERBUFFER_FORMATS;
@@ -1,15 +1,17 @@
1
1
  // SAMPLER FILTERS
2
2
  import {SamplerParameters} from '@luma.gl/api';
3
3
  import GL from '@luma.gl/constants';
4
- import {WebGLSamplerParameters} from '../../types/webgl';
4
+ import {GLSamplerParameters} from '../../types/webgl';
5
5
  import {convertCompareFunction, convertToCompareFunction} from './device-parameters';
6
6
 
7
+ /* eslint-disable consistent-return */
8
+
7
9
  /**
8
10
  * Convert WebGPU-style sampler props to WebGL
9
11
  * @param props
10
12
  * @returns
11
13
  */
12
- export function convertSamplerParametersToWebGL(props: SamplerParameters): WebGLSamplerParameters {
14
+ export function convertSamplerParametersToWebGL(props: SamplerParameters): GLSamplerParameters {
13
15
  const params: Record<number, number> = {};
14
16
  if (props.addressModeU) {
15
17
  params[GL.TEXTURE_WRAP_S] = convertAddressMode(props.addressModeU);
@@ -33,14 +35,16 @@ export function convertSamplerParametersToWebGL(props: SamplerParameters): WebGL
33
35
  if (props.lodMaxClamp !== undefined) {
34
36
  params[GL.TEXTURE_MAX_LOD] = props.lodMaxClamp;
35
37
  }
36
- if (props.compare) {
38
+ if (props.type === 'comparison-sampler') {
37
39
  // Setting prop.compare turns this into a comparison sampler
38
40
  params[GL.TEXTURE_COMPARE_MODE] = GL.COMPARE_REF_TO_TEXTURE;
41
+ }
42
+ if (props.compare) {
39
43
  params[GL.TEXTURE_COMPARE_FUNC] = convertCompareFunction('compare', props.compare);
40
44
  }
41
45
  // Note depends on WebGL extension
42
46
  if (props.maxAnisotropy) {
43
- props[GL.TEXTURE_MAX_ANISOTROPY_EXT] = props.maxAnisotropy;
47
+ params[GL.TEXTURE_MAX_ANISOTROPY_EXT] = props.maxAnisotropy;
44
48
  }
45
49
  return params;
46
50
  }
@@ -82,7 +86,7 @@ function convertMinFilterMode(minFilter: 'nearest' | 'linear', mipmapFilter?: 'n
82
86
  * @param props
83
87
  * @returns
84
88
  */
85
- export function convertToSamplerParameters(params: WebGLSamplerParameters): SamplerParameters {
89
+ export function convertToSamplerParameters(params: GLSamplerParameters): SamplerParameters {
86
90
  const props: SamplerParameters = {};
87
91
  if (params[GL.TEXTURE_WRAP_S]) {
88
92
  props.addressModeU = convertToAddressMode(params[GL.TEXTURE_WRAP_S]);
@@ -108,7 +112,10 @@ function convertMinFilterMode(minFilter: 'nearest' | 'linear', mipmapFilter?: 'n
108
112
  if (params[GL.TEXTURE_MAX_LOD]) {
109
113
  props.lodMaxClamp = params[GL.TEXTURE_MAX_LOD];
110
114
  }
111
- if (params[GL.TEXTURE_COMPARE_MODE] === GL.COMPARE_REF_TO_TEXTURE) {
115
+ if (params[GL.TEXTURE_COMPARE_MODE]) {
116
+ props.type = params[GL.TEXTURE_COMPARE_MODE] === GL.COMPARE_REF_TO_TEXTURE ? 'comparison-sampler' : 'color-sampler';
117
+ }
118
+ if (params[GL.TEXTURE_COMPARE_FUNC]) {
112
119
  props.compare = convertToCompareFunction('compare', params[GL.TEXTURE_COMPARE_FUNC]);
113
120
  }
114
121
  // NOTE depends on extension (very common)
@@ -124,6 +131,7 @@ function convertToAddressMode(addressMode: number): 'clamp-to-edge' | 'repeat' |
124
131
  case GL.CLAMP_TO_EDGE: return 'clamp-to-edge';
125
132
  case GL.REPEAT: return 'repeat';
126
133
  case GL.MIRRORED_REPEAT: return 'mirror-repeat';
134
+ default: throw new Error('address');
127
135
  }
128
136
  }
129
137
 
@@ -131,6 +139,7 @@ function convertToMaxFilterMode(filterMode: number): 'nearest' | 'linear' {
131
139
  switch (filterMode) {
132
140
  case GL.NEAREST: return 'nearest';
133
141
  case GL.LINEAR: return 'linear';
142
+ default: throw new Error('maxfilter');
134
143
  }
135
144
  }
136
145
 
@@ -144,6 +153,7 @@ function convertToMinFilterMode(filterMode: number): 'nearest' | 'linear' {
144
153
  case GL.LINEAR_MIPMAP_NEAREST: return 'linear';
145
154
  case GL.NEAREST_MIPMAP_LINEAR: return 'nearest';
146
155
  case GL.LINEAR_MIPMAP_LINEAR: return 'linear';
156
+ default: throw new Error('minfilter');
147
157
  }
148
158
  }
149
159
 
@@ -156,13 +166,14 @@ function convertToMipmapFilterMode(filterMode: number): 'nearest' | 'linear' {
156
166
  case GL.LINEAR_MIPMAP_NEAREST: return 'nearest';
157
167
  case GL.NEAREST_MIPMAP_LINEAR: return 'linear';
158
168
  case GL.LINEAR_MIPMAP_LINEAR: return 'linear';
169
+ default: throw new Error('mipmap');
159
170
  }
160
171
  }
161
172
 
162
173
  /**
163
174
  * Override sampler settings that are not supported by Non-Power-of-Two textures in WebGL1.
164
175
  */
165
- export function updateSamplerParametersForNPOT(parameters: WebGLSamplerParameters): WebGLSamplerParameters {
176
+ export function updateSamplerParametersForNPOT(parameters: GLSamplerParameters): GLSamplerParameters {
166
177
  const newParameters = {...parameters};
167
178
  if (parameters[GL.TEXTURE_MIN_FILTER] !== GL.NEAREST) {
168
179
  // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();
@@ -1,8 +1,10 @@
1
- import type {TextureFormat, DeviceFeature, Device} from '@luma.gl/api';
1
+ import type {TextureFormat, DeviceFeature} from '@luma.gl/api';
2
2
  import {decodeTextureFormat} from '@luma.gl/api';
3
3
  import GL from '@luma.gl/constants';
4
4
  import {isWebGL2} from '../../context/context/webgl-checks';
5
5
 
6
+ /* eslint-disable camelcase */
7
+
6
8
  // TEXTURE FEATURES
7
9
 
8
10
  // Define local device feature strings to optimize minification
@@ -29,7 +31,7 @@ const EXT_SRGB = 'EXT_sRGB'; // https://developer.mozilla.org/en-US/docs/Web/API
29
31
  const EXT_TEXTURE_NORM16 = 'EXT_texture_norm16';
30
32
  const EXT_FLOAT_WEBGL1 = 'WEBGL_color_buffer_float';
31
33
  const EXT_FLOAT_RENDER_WEBGL2 = 'EXT_color_buffer_float';
32
- const EXT_HALF_FLOAT_WEBGL1 = 'WEBGL_color_buffer_half_float';
34
+ // const EXT_HALF_FLOAT_WEBGL1 = 'EXT_color_buffer_half_float';
33
35
  // const DEPTH = 'WEBGL_depth_texture';
34
36
 
35
37
  const checkExtension = (gl: WebGLRenderingContext, extension: string): boolean =>
@@ -64,7 +66,7 @@ const TEXTURE_FEATURE_CHECKS: Partial<Record<DeviceFeature, (gl: WebGLRenderingC
64
66
  };
65
67
 
66
68
  export function checkTextureFeature(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {
67
- return TEXTURE_FEATURE_CHECKS[feature]?.(gl);
69
+ return TEXTURE_FEATURE_CHECKS[feature]?.(gl) || false;
68
70
  }
69
71
 
70
72
  const checkTextureFeatures = (gl: WebGLRenderingContext, features: DeviceFeature[]): boolean =>
@@ -240,7 +242,7 @@ export const TEXTURE_FORMATS: Record<TextureFormat, Format> = {
240
242
  // "depth24unorm-stencil8" feature
241
243
  'depth24unorm-stencil8': {gl: GL.DEPTH24_STENCIL8, b: 4, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},
242
244
  // "depth32float-stencil8" feature
243
- "depth32float-stencil8": {gl: GL.DEPTH32F_STENCIL8, b: 5, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},
245
+ 'depth32float-stencil8': {gl: GL.DEPTH32F_STENCIL8, b: 5, c: 2, p: 1, attachment: GL.DEPTH_STENCIL_ATTACHMENT},
244
246
 
245
247
  // BC compressed formats: check device.features.has("texture-compression-bc");
246
248
 
@@ -380,22 +382,22 @@ export function getTextureFormatSupport(
380
382
  if (!info) {
381
383
  return {supported: false};
382
384
  }
383
- let decoded;
384
- try {
385
- decoded = decodeTextureFormat(format);
386
- } catch {}
385
+ // let decoded;
386
+ // try {
387
+ // decoded = decodeTextureFormat(format);
388
+ // } catch {}
387
389
 
388
390
  // Support Check that we have a GL constant
389
391
  let supported = isWebGL2(gl) ? info.gl === undefined : info.gl1 === undefined;
390
392
  supported = supported && checkTextureFeatures(gl, [info.f]);
391
393
 
392
394
  // Filtering
393
- const filterable = info.filter
394
- ? checkTextureFeatures(gl, [info.filter])
395
- : decoded && !decoded.signed;
396
- const renderable = info.filter
397
- ? checkTextureFeatures(gl, [info.render])
398
- : decoded && !decoded.signed;
395
+ // const filterable = info.filter
396
+ // ? checkTextureFeatures(gl, [info.filter])
397
+ // : decoded && !decoded.signed;
398
+ // const renderable = info.filter
399
+ // ? checkTextureFeatures(gl, [info.render])
400
+ // : decoded && !decoded.signed;
399
401
 
400
402
  return {
401
403
  supported,
@@ -520,8 +522,8 @@ export function _checkFloat32ColorAttachment(
520
522
  srcFormat = GL.RGBA,
521
523
  srcType = GL.UNSIGNED_BYTE
522
524
  ) {
523
- let texture: WebGLTexture;
524
- let framebuffer: WebGLFramebuffer;
525
+ let texture: WebGLTexture | null = null;
526
+ let framebuffer: WebGLFramebuffer | null = null;
525
527
  try {
526
528
  texture = gl.createTexture();
527
529
  gl.bindTexture(GL.TEXTURE_2D, texture);
@@ -8,6 +8,7 @@ export function getVertexFormat(type: GL, components: number): VertexFormat {
8
8
  case 2: return `${base}x2`;
9
9
  case 3: return `${base}x3`;
10
10
  case 4: return `${base}x4`;
11
+ default: throw new Error(String(components));
11
12
  }
12
13
  }
13
14
 
@@ -3,7 +3,6 @@
3
3
  // available in an WebGL1 or WebGL2 environment.
4
4
 
5
5
  import {DeviceFeature} from '@luma.gl/api';
6
- import GL from '@luma.gl/constants';
7
6
  import {isWebGL2} from '../../context/context/webgl-checks';
8
7
  import {isOldIE} from './is-old-ie';
9
8
  import {getTextureFeatures, _checkFloat32ColorAttachment} from '../converters/texture-formats';
@@ -47,7 +46,12 @@ export function getWebGLFeatures(gl: WebGLRenderingContext): Set<DeviceFeature>
47
46
  }
48
47
 
49
48
  function isFeatureSupported(gl: WebGLRenderingContext, feature: DeviceFeature): boolean {
50
- const [webgl1Feature, webgl2Feature] = WEBGL_FEATURES[feature];;
49
+ const featureInfo = WEBGL_FEATURES[feature];
50
+ if (!featureInfo) {
51
+ return false;
52
+ }
53
+
54
+ const [webgl1Feature, webgl2Feature] = featureInfo || [];
51
55
 
52
56
  // Get extension name from table
53
57
  const featureDefinition = isWebGL2(gl) ? webgl2Feature : webgl1Feature;
@@ -100,6 +104,9 @@ export function canCompileGLSLExtension(gl: WebGLRenderingContext, extensionName
100
104
  const source = `#extension GL_${extensionName} : ${behavior}\nvoid main(void) {}`;
101
105
 
102
106
  const shader = gl.createShader(gl.VERTEX_SHADER);
107
+ if (!shader) {
108
+ throw new Error('shader');
109
+ }
103
110
  gl.shaderSource(shader, source);
104
111
  gl.compileShader(shader);
105
112
  const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
@@ -5,7 +5,7 @@ import {getWebGL2Context} from '../../context/context/webgl-checks';
5
5
 
6
6
  /** Populate a WebGPU style device limits */
7
7
  export function getDeviceLimits(gl: WebGLRenderingContext): DeviceLimits {
8
- const gl2: WebGL2RenderingContext = getWebGL2Context(gl);
8
+ const gl2: WebGL2RenderingContext | null = getWebGL2Context(gl);
9
9
  return {
10
10
  maxTextureDimension1D: 0, // WebGL does not support 1D textures
11
11
  maxTextureDimension2D: gl.getParameter(GL.MAX_TEXTURE_SIZE),
@@ -27,23 +27,27 @@ export function getDeviceInfo(gl: WebGLRenderingContext): DeviceInfo {
27
27
  };
28
28
  }
29
29
 
30
- function identifyGPUVendor(vendor: string, renderer: string): 'nvidia' | 'intel' | 'apple' | 'amd' | 'unknown' {
31
- if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {
30
+ function identifyGPUVendor(vendor: string, renderer: string): 'nvidia' | 'intel' | 'apple' | 'amd' | 'software' | 'unknown' {
31
+ if ((/NVIDIA/i.exec(vendor)) || (/NVIDIA/i.exec(renderer))) {
32
32
  return 'nvidia';
33
33
  }
34
- if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {
34
+ if ((/INTEL/i.exec(vendor)) || (/INTEL/i.exec(renderer))) {
35
35
  return 'intel';
36
36
  }
37
- if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
37
+ if ((/Apple/i.exec(vendor)) || (/Apple/i.exec(renderer))) {
38
38
  return 'apple';
39
39
  }
40
40
  if (
41
- vendor.match(/AMD/i) ||
42
- renderer.match(/AMD/i) ||
43
- vendor.match(/ATI/i) ||
44
- renderer.match(/ATI/i)
41
+ (/AMD/i.exec(vendor)) ||
42
+ (/AMD/i.exec(renderer)) ||
43
+ (/ATI/i.exec(vendor)) ||
44
+ (/ATI/i.exec(renderer))
45
45
  ) {
46
46
  return 'amd';
47
47
  }
48
+ if ((/SwiftShader/i.exec(vendor)) || (/SwiftShader/i.exec(renderer))) {
49
+ return 'software';
50
+ }
51
+
48
52
  return 'unknown';
49
53
  }
@@ -0,0 +1,37 @@
1
+ // luma.gl, MIT license
2
+
3
+ /** Information extracted from shader source code */
4
+ export type ShaderInfo = {
5
+ name: string;
6
+ language: 'glsl' | 'wgsl';
7
+ version: number;
8
+ };
9
+
10
+ /** Extracts information from shader source code */
11
+ export function getShaderInfo(source: string, defaultName?: string): ShaderInfo {
12
+ return {
13
+ name: getShaderName(source, defaultName),
14
+ language: 'glsl',
15
+ version: getShaderVersion(source)
16
+ };
17
+ }
18
+
19
+ /** Extracts GLSLIFY style naming of shaders: `#define SHADER_NAME ...` */
20
+ function getShaderName(shader: string, defaultName: string = 'unnamed'): string {
21
+ const SHADER_NAME_REGEXP = /#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/;
22
+ const match = SHADER_NAME_REGEXP.exec(shader);
23
+ return match ? match[1] : defaultName;
24
+ }
25
+
26
+ /** returns GLSL shader version of given shader string */
27
+ function getShaderVersion(source: string): number {
28
+ let version = 100;
29
+ const words = source.match(/[^\s]+/g);
30
+ if (words && words.length >= 2 && words[0] === '#version') {
31
+ const v = parseInt(words[1], 10);
32
+ if (Number.isFinite(v)) {
33
+ version = v;
34
+ }
35
+ }
36
+ return version;
37
+ }