@luma.gl/webgl 9.0.0-alpha.5 → 9.0.0-alpha.51

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 (527) hide show
  1. package/LICENSE +3 -1
  2. package/dist/adapter/converters/device-parameters.d.ts +23 -4
  3. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  4. package/dist/adapter/converters/device-parameters.js +101 -73
  5. package/dist/adapter/converters/device-parameters.js.map +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts +6 -6
  7. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js +74 -111
  9. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  10. package/dist/adapter/converters/shader-formats.d.ts +9 -0
  11. package/dist/adapter/converters/shader-formats.d.ts.map +1 -0
  12. package/dist/adapter/converters/shader-formats.js +52 -0
  13. package/dist/adapter/converters/shader-formats.js.map +1 -0
  14. package/dist/adapter/converters/texture-formats.d.ts +32 -44
  15. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  16. package/dist/adapter/converters/texture-formats.js +309 -346
  17. package/dist/adapter/converters/texture-formats.js.map +1 -1
  18. package/dist/adapter/converters/vertex-formats.d.ts +9 -3
  19. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  20. package/dist/adapter/converters/vertex-formats.js +53 -22
  21. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  22. package/dist/adapter/device-helpers/device-features.d.ts +1 -1
  23. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/device-features.js +17 -23
  25. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  26. package/dist/adapter/device-helpers/device-limits.d.ts +3 -3
  27. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  28. package/dist/adapter/device-helpers/device-limits.js +54 -58
  29. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  30. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  31. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  32. package/dist/adapter/device-helpers/get-device-info.js +31 -22
  33. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  34. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/is-old-ie.js +2 -1
  36. package/dist/adapter/device-helpers/is-old-ie.js.map +1 -1
  37. package/dist/adapter/helpers/decode-webgl-types.d.ts +26 -0
  38. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -0
  39. package/dist/adapter/helpers/decode-webgl-types.js +89 -0
  40. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  41. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -48
  42. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  43. package/dist/adapter/helpers/get-shader-layout.js +87 -143
  44. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  46. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  47. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -11
  48. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.d.ts +3 -2
  50. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  51. package/dist/adapter/helpers/set-uniform.js +51 -82
  52. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.d.ts +16 -0
  54. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -0
  55. package/dist/adapter/helpers/webgl-topology-utils.js +103 -0
  56. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  57. package/dist/adapter/objects/constants-to-keys.d.ts +1 -3
  58. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  59. package/dist/adapter/objects/constants-to-keys.js +2 -29
  60. package/dist/adapter/objects/constants-to-keys.js.map +1 -1
  61. package/dist/adapter/objects/webgl-renderbuffer.d.ts +15 -12
  62. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  63. package/dist/adapter/objects/webgl-renderbuffer.js +36 -44
  64. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  65. package/dist/adapter/objects/webgl-resource.d.ts +6 -9
  66. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  67. package/dist/adapter/objects/webgl-resource.js +26 -83
  68. package/dist/adapter/objects/webgl-resource.js.map +1 -1
  69. package/dist/adapter/resources/webgl-buffer.d.ts +19 -11
  70. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  71. package/dist/adapter/resources/webgl-buffer.js +60 -88
  72. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  73. package/dist/adapter/resources/webgl-command-buffer.d.ts +15 -9
  74. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  75. package/dist/adapter/resources/webgl-command-buffer.js +175 -48
  76. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  77. package/dist/adapter/resources/webgl-command-encoder.d.ts +7 -6
  78. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-command-encoder.js +10 -20
  80. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  81. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  82. package/dist/adapter/resources/webgl-framebuffer.d.ts +21 -24
  83. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  84. package/dist/adapter/resources/webgl-framebuffer.js +63 -173
  85. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  86. package/dist/adapter/resources/webgl-render-pass.d.ts +19 -4
  87. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-render-pass.js +99 -11
  89. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  90. package/dist/adapter/resources/webgl-render-pipeline.d.ts +55 -21
  91. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  92. package/dist/adapter/resources/webgl-render-pipeline.js +108 -270
  93. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  94. package/dist/adapter/resources/webgl-sampler.d.ts +6 -5
  95. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  96. package/dist/adapter/resources/webgl-sampler.js +11 -21
  97. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  98. package/dist/adapter/resources/webgl-shader.d.ts +5 -5
  99. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  100. package/dist/adapter/resources/webgl-shader.js +18 -43
  101. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  102. package/dist/adapter/resources/webgl-texture.d.ts +62 -42
  103. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  104. package/dist/adapter/resources/webgl-texture.js +137 -256
  105. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  106. package/dist/adapter/resources/webgl-transform-feedback.d.ts +47 -0
  107. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -0
  108. package/dist/adapter/resources/webgl-transform-feedback.js +164 -0
  109. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts +67 -0
  111. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -0
  112. package/dist/adapter/resources/webgl-vertex-array.js +167 -0
  113. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  114. package/dist/adapter/webgl-canvas-context.d.ts +6 -7
  115. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.js +10 -23
  117. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  118. package/dist/adapter/webgl-device.d.ts +76 -41
  119. package/dist/adapter/webgl-device.d.ts.map +1 -1
  120. package/dist/adapter/webgl-device.js +219 -129
  121. package/dist/adapter/webgl-device.js.map +1 -1
  122. package/dist/classic/accessor.d.ts +3 -3
  123. package/dist/classic/accessor.d.ts.map +1 -1
  124. package/dist/classic/accessor.js +26 -52
  125. package/dist/classic/accessor.js.map +1 -1
  126. package/dist/classic/clear.d.ts +22 -0
  127. package/dist/classic/clear.d.ts.map +1 -0
  128. package/dist/classic/clear.js +88 -0
  129. package/dist/classic/clear.js.map +1 -0
  130. package/dist/classic/copy-and-blit.d.ts +62 -0
  131. package/dist/classic/copy-and-blit.d.ts.map +1 -0
  132. package/dist/classic/copy-and-blit.js +191 -0
  133. package/dist/classic/copy-and-blit.js.map +1 -0
  134. package/dist/classic/format-utils.d.ts +3 -0
  135. package/dist/classic/format-utils.d.ts.map +1 -0
  136. package/dist/classic/format-utils.js +37 -0
  137. package/dist/classic/format-utils.js.map +1 -0
  138. package/dist/classic/typed-array-utils.d.ts +17 -17
  139. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  140. package/dist/classic/typed-array-utils.js +18 -39
  141. package/dist/classic/typed-array-utils.js.map +1 -1
  142. package/dist/context/context/create-browser-context.d.ts +40 -0
  143. package/dist/context/context/create-browser-context.d.ts.map +1 -0
  144. package/dist/context/context/create-browser-context.js +53 -0
  145. package/dist/context/context/create-browser-context.js.map +1 -0
  146. package/dist/context/context/create-headless-context.d.ts +9 -0
  147. package/dist/context/context/create-headless-context.d.ts.map +1 -0
  148. package/dist/context/context/create-headless-context.js +42 -0
  149. package/dist/context/context/create-headless-context.js.map +1 -0
  150. package/dist/context/context/webgl-checks.d.ts.map +1 -1
  151. package/dist/context/context/webgl-checks.js +1 -4
  152. package/dist/context/context/webgl-checks.js.map +1 -1
  153. package/dist/context/debug/spector.d.ts +1 -2
  154. package/dist/context/debug/spector.d.ts.map +1 -1
  155. package/dist/context/debug/spector.js +8 -20
  156. package/dist/context/debug/spector.js.map +1 -1
  157. package/dist/context/debug/webgl-developer-tools.d.ts +2 -2
  158. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  159. package/dist/context/debug/webgl-developer-tools.js +15 -39
  160. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  161. package/dist/context/parameters/unified-parameter-api.d.ts +9 -8
  162. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  163. package/dist/context/parameters/unified-parameter-api.js +9 -19
  164. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  165. package/dist/context/parameters/webgl-parameter-tables.d.ts +105 -106
  166. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  167. package/dist/context/parameters/webgl-parameter-tables.js +267 -286
  168. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  169. package/dist/context/polyfill/context-data.d.ts +13 -0
  170. package/dist/context/polyfill/context-data.d.ts.map +1 -0
  171. package/dist/context/polyfill/context-data.js +12 -0
  172. package/dist/context/polyfill/context-data.js.map +1 -0
  173. package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
  174. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
  175. package/dist/context/polyfill/get-parameter-polyfill.js +37 -43
  176. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  177. package/dist/context/polyfill/polyfill-context.d.ts.map +1 -1
  178. package/dist/context/polyfill/polyfill-context.js +22 -30
  179. package/dist/context/polyfill/polyfill-context.js.map +1 -1
  180. package/dist/context/polyfill/polyfill-table.d.ts +8 -8
  181. package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
  182. package/dist/context/polyfill/polyfill-table.js +18 -41
  183. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  184. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +1 -1
  185. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -87
  186. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  187. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  188. package/dist/context/state-tracker/deep-array-equal.js +0 -4
  189. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  190. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  191. package/dist/context/state-tracker/track-context-state.js +26 -62
  192. package/dist/context/state-tracker/track-context-state.js.map +1 -1
  193. package/dist/context/state-tracker/with-parameters.d.ts +2 -1
  194. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  195. package/dist/context/state-tracker/with-parameters.js +8 -10
  196. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  197. package/dist/dist.dev.js +8624 -0
  198. package/dist/index.cjs +6570 -0
  199. package/dist/index.d.ts +26 -24
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +27 -26
  202. package/dist/index.js.map +1 -1
  203. package/dist/types.d.ts +3 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/types.js.map +1 -1
  206. package/dist.min.js +52 -0
  207. package/package.json +21 -9
  208. package/src/adapter/converters/device-parameters.ts +144 -41
  209. package/src/adapter/converters/sampler-parameters.ts +103 -41
  210. package/src/adapter/converters/shader-formats.ts +44 -0
  211. package/src/adapter/converters/texture-formats.ts +268 -195
  212. package/src/adapter/converters/vertex-formats.ts +71 -10
  213. package/src/adapter/device-helpers/device-features.ts +14 -3
  214. package/src/adapter/device-helpers/device-limits.ts +5 -3
  215. package/src/adapter/device-helpers/get-device-info.ts +53 -18
  216. package/src/adapter/device-helpers/is-old-ie.ts +3 -0
  217. package/src/adapter/helpers/{uniforms.ts → decode-webgl-types.ts} +39 -21
  218. package/src/adapter/helpers/get-shader-layout.ts +121 -146
  219. package/src/adapter/helpers/parse-shader-compiler-log.ts +24 -8
  220. package/src/adapter/helpers/set-uniform.ts +39 -35
  221. package/src/adapter/helpers/webgl-topology-utils.ts +103 -0
  222. package/src/adapter/objects/constants-to-keys.ts +6 -25
  223. package/src/adapter/objects/webgl-renderbuffer.ts +43 -37
  224. package/src/adapter/objects/webgl-resource.ts +16 -23
  225. package/src/adapter/resources/.webgl-render-pipeline.ts.swp +0 -0
  226. package/src/adapter/resources/webgl-buffer.ts +67 -62
  227. package/src/adapter/resources/webgl-command-buffer.ts +327 -25
  228. package/src/adapter/resources/webgl-command-encoder.ts +20 -12
  229. package/src/adapter/resources/webgl-external-texture.ts +5 -2
  230. package/src/adapter/resources/webgl-framebuffer.ts +90 -134
  231. package/src/adapter/resources/webgl-render-pass.ts +166 -4
  232. package/src/adapter/resources/webgl-render-pipeline.ts +256 -192
  233. package/src/adapter/resources/webgl-sampler.ts +16 -10
  234. package/src/adapter/resources/webgl-shader.ts +33 -27
  235. package/src/adapter/resources/webgl-texture.ts +138 -99
  236. package/src/adapter/resources/webgl-transform-feedback.ts +202 -0
  237. package/src/adapter/resources/webgl-vertex-array.ts +283 -0
  238. package/src/adapter/webgl-canvas-context.ts +16 -14
  239. package/src/adapter/webgl-device.ts +328 -79
  240. package/src/classic/accessor.ts +8 -18
  241. package/src/classic/clear.ts +113 -0
  242. package/src/classic/copy-and-blit.ts +311 -0
  243. package/src/classic/format-utils.ts +46 -0
  244. package/src/classic/typed-array-utils.ts +21 -27
  245. package/src/context/context/create-browser-context.ts +140 -0
  246. package/src/context/context/create-headless-context.ts +51 -0
  247. package/src/context/context/webgl-checks.ts +3 -1
  248. package/src/context/debug/spector.ts +9 -6
  249. package/src/context/debug/webgl-developer-tools.ts +23 -15
  250. package/src/context/parameters/unified-parameter-api.ts +23 -14
  251. package/src/context/parameters/webgl-parameter-tables.ts +120 -98
  252. package/src/context/polyfill/context-data.ts +30 -0
  253. package/src/context/polyfill/get-parameter-polyfill.ts +11 -7
  254. package/src/context/polyfill/polyfill-context.ts +10 -9
  255. package/src/context/polyfill/polyfill-table.ts +21 -16
  256. package/src/context/polyfill/polyfill-vertex-array-object.ts +5 -0
  257. package/src/context/state-tracker/deep-array-equal.ts +2 -0
  258. package/src/context/state-tracker/track-context-state.ts +14 -11
  259. package/src/context/state-tracker/with-parameters.ts +13 -4
  260. package/src/index.ts +70 -35
  261. package/src/types.ts +5 -0
  262. package/dist/adapter/converters/renderbuffer-formats.d.ts +0 -16
  263. package/dist/adapter/converters/renderbuffer-formats.d.ts.map +0 -1
  264. package/dist/adapter/converters/renderbuffer-formats.js +0 -185
  265. package/dist/adapter/converters/renderbuffer-formats.js.map +0 -1
  266. package/dist/adapter/helpers/attribute-utils.d.ts +0 -11
  267. package/dist/adapter/helpers/attribute-utils.d.ts.map +0 -1
  268. package/dist/adapter/helpers/attribute-utils.js +0 -81
  269. package/dist/adapter/helpers/attribute-utils.js.map +0 -1
  270. package/dist/adapter/helpers/uniforms.d.ts +0 -26
  271. package/dist/adapter/helpers/uniforms.d.ts.map +0 -1
  272. package/dist/adapter/helpers/uniforms.js +0 -99
  273. package/dist/adapter/helpers/uniforms.js.map +0 -1
  274. package/dist/adapter/objects/webgl-vertex-array-object.d.ts +0 -27
  275. package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +0 -1
  276. package/dist/adapter/objects/webgl-vertex-array-object.js +0 -84
  277. package/dist/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  278. package/dist/bundle.d.ts +0 -2
  279. package/dist/bundle.d.ts.map +0 -1
  280. package/dist/bundle.js +0 -5
  281. package/dist/bundle.js.map +0 -1
  282. package/dist/classic/buffer.d.ts +0 -95
  283. package/dist/classic/buffer.d.ts.map +0 -1
  284. package/dist/classic/buffer.js +0 -384
  285. package/dist/classic/buffer.js.map +0 -1
  286. package/dist/context/context/context-state.d.ts +0 -18
  287. package/dist/context/context/context-state.d.ts.map +0 -1
  288. package/dist/context/context/context-state.js +0 -26
  289. package/dist/context/context/context-state.js.map +0 -1
  290. package/dist/context/context/create-context.d.ts +0 -41
  291. package/dist/context/context/create-context.d.ts.map +0 -1
  292. package/dist/context/context/create-context.js +0 -49
  293. package/dist/context/context/create-context.js.map +0 -1
  294. package/dist/context/context/device-pixels.d.ts +0 -25
  295. package/dist/context/context/device-pixels.d.ts.map +0 -1
  296. package/dist/context/context/device-pixels.js +0 -98
  297. package/dist/context/context/device-pixels.js.map +0 -1
  298. package/dist/es5/adapter/converters/device-parameters.js +0 -170
  299. package/dist/es5/adapter/converters/device-parameters.js.map +0 -1
  300. package/dist/es5/adapter/converters/renderbuffer-formats.js +0 -163
  301. package/dist/es5/adapter/converters/renderbuffer-formats.js.map +0 -1
  302. package/dist/es5/adapter/converters/sampler-parameters.js +0 -226
  303. package/dist/es5/adapter/converters/sampler-parameters.js.map +0 -1
  304. package/dist/es5/adapter/converters/texture-formats.js +0 -1031
  305. package/dist/es5/adapter/converters/texture-formats.js.map +0 -1
  306. package/dist/es5/adapter/converters/vertex-formats.js +0 -45
  307. package/dist/es5/adapter/converters/vertex-formats.js.map +0 -1
  308. package/dist/es5/adapter/device-helpers/device-features.js +0 -144
  309. package/dist/es5/adapter/device-helpers/device-features.js.map +0 -1
  310. package/dist/es5/adapter/device-helpers/device-limits.js +0 -64
  311. package/dist/es5/adapter/device-helpers/device-limits.js.map +0 -1
  312. package/dist/es5/adapter/device-helpers/get-device-info.js +0 -55
  313. package/dist/es5/adapter/device-helpers/get-device-info.js.map +0 -1
  314. package/dist/es5/adapter/device-helpers/is-old-ie.js +0 -16
  315. package/dist/es5/adapter/device-helpers/is-old-ie.js.map +0 -1
  316. package/dist/es5/adapter/helpers/attribute-utils.js +0 -91
  317. package/dist/es5/adapter/helpers/attribute-utils.js.map +0 -1
  318. package/dist/es5/adapter/helpers/get-shader-layout.js +0 -371
  319. package/dist/es5/adapter/helpers/get-shader-layout.js.map +0 -1
  320. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js +0 -72
  321. package/dist/es5/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  322. package/dist/es5/adapter/helpers/set-uniform.js +0 -125
  323. package/dist/es5/adapter/helpers/set-uniform.js.map +0 -1
  324. package/dist/es5/adapter/helpers/uniforms.js +0 -112
  325. package/dist/es5/adapter/helpers/uniforms.js.map +0 -1
  326. package/dist/es5/adapter/objects/constants-to-keys.js +0 -54
  327. package/dist/es5/adapter/objects/constants-to-keys.js.map +0 -1
  328. package/dist/es5/adapter/objects/webgl-renderbuffer.js +0 -150
  329. package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +0 -1
  330. package/dist/es5/adapter/objects/webgl-resource.js +0 -292
  331. package/dist/es5/adapter/objects/webgl-resource.js.map +0 -1
  332. package/dist/es5/adapter/objects/webgl-vertex-array-object.js +0 -137
  333. package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  334. package/dist/es5/adapter/resources/webgl-buffer.js +0 -243
  335. package/dist/es5/adapter/resources/webgl-buffer.js.map +0 -1
  336. package/dist/es5/adapter/resources/webgl-command-buffer.js +0 -96
  337. package/dist/es5/adapter/resources/webgl-command-buffer.js.map +0 -1
  338. package/dist/es5/adapter/resources/webgl-command-encoder.js +0 -98
  339. package/dist/es5/adapter/resources/webgl-command-encoder.js.map +0 -1
  340. package/dist/es5/adapter/resources/webgl-external-texture.js +0 -2
  341. package/dist/es5/adapter/resources/webgl-external-texture.js.map +0 -1
  342. package/dist/es5/adapter/resources/webgl-framebuffer.js +0 -345
  343. package/dist/es5/adapter/resources/webgl-framebuffer.js.map +0 -1
  344. package/dist/es5/adapter/resources/webgl-render-pass.js +0 -61
  345. package/dist/es5/adapter/resources/webgl-render-pass.js.map +0 -1
  346. package/dist/es5/adapter/resources/webgl-render-pipeline.js +0 -505
  347. package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +0 -1
  348. package/dist/es5/adapter/resources/webgl-sampler.js +0 -96
  349. package/dist/es5/adapter/resources/webgl-sampler.js.map +0 -1
  350. package/dist/es5/adapter/resources/webgl-shader.js +0 -149
  351. package/dist/es5/adapter/resources/webgl-shader.js.map +0 -1
  352. package/dist/es5/adapter/resources/webgl-texture.js +0 -986
  353. package/dist/es5/adapter/resources/webgl-texture.js.map +0 -1
  354. package/dist/es5/adapter/webgl-canvas-context.js +0 -97
  355. package/dist/es5/adapter/webgl-canvas-context.js.map +0 -1
  356. package/dist/es5/adapter/webgl-device.js +0 -399
  357. package/dist/es5/adapter/webgl-device.js.map +0 -1
  358. package/dist/es5/bundle.js +0 -7
  359. package/dist/es5/bundle.js.map +0 -1
  360. package/dist/es5/classic/accessor.js +0 -181
  361. package/dist/es5/classic/accessor.js.map +0 -1
  362. package/dist/es5/classic/buffer.js +0 -470
  363. package/dist/es5/classic/buffer.js.map +0 -1
  364. package/dist/es5/classic/typed-array-utils.js +0 -126
  365. package/dist/es5/classic/typed-array-utils.js.map +0 -1
  366. package/dist/es5/context/context/context-state.js +0 -31
  367. package/dist/es5/context/context/context-state.js.map +0 -1
  368. package/dist/es5/context/context/create-context.js +0 -69
  369. package/dist/es5/context/context/create-context.js.map +0 -1
  370. package/dist/es5/context/context/device-pixels.js +0 -115
  371. package/dist/es5/context/context/device-pixels.js.map +0 -1
  372. package/dist/es5/context/context/webgl-checks.js +0 -54
  373. package/dist/es5/context/context/webgl-checks.js.map +0 -1
  374. package/dist/es5/context/debug/spector.js +0 -133
  375. package/dist/es5/context/debug/spector.js.map +0 -1
  376. package/dist/es5/context/debug/webgl-developer-tools.js +0 -198
  377. package/dist/es5/context/debug/webgl-developer-tools.js.map +0 -1
  378. package/dist/es5/context/parameters/unified-parameter-api.js +0 -97
  379. package/dist/es5/context/parameters/unified-parameter-api.js.map +0 -1
  380. package/dist/es5/context/parameters/webgl-parameter-tables.js +0 -392
  381. package/dist/es5/context/parameters/webgl-parameter-tables.js.map +0 -1
  382. package/dist/es5/context/polyfill/get-parameter-polyfill.js +0 -81
  383. package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +0 -1
  384. package/dist/es5/context/polyfill/polyfill-context.js +0 -135
  385. package/dist/es5/context/polyfill/polyfill-context.js.map +0 -1
  386. package/dist/es5/context/polyfill/polyfill-table.js +0 -166
  387. package/dist/es5/context/polyfill/polyfill-table.js.map +0 -1
  388. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js +0 -341
  389. package/dist/es5/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  390. package/dist/es5/context/state-tracker/deep-array-equal.js +0 -28
  391. package/dist/es5/context/state-tracker/deep-array-equal.js.map +0 -1
  392. package/dist/es5/context/state-tracker/track-context-state.js +0 -211
  393. package/dist/es5/context/state-tracker/track-context-state.js.map +0 -1
  394. package/dist/es5/context/state-tracker/with-parameters.js +0 -44
  395. package/dist/es5/context/state-tracker/with-parameters.js.map +0 -1
  396. package/dist/es5/index.js +0 -276
  397. package/dist/es5/index.js.map +0 -1
  398. package/dist/es5/init.js +0 -10
  399. package/dist/es5/init.js.map +0 -1
  400. package/dist/es5/types/webgl.js +0 -6
  401. package/dist/es5/types/webgl.js.map +0 -1
  402. package/dist/es5/types.js +0 -2
  403. package/dist/es5/types.js.map +0 -1
  404. package/dist/esm/adapter/converters/device-parameters.js +0 -155
  405. package/dist/esm/adapter/converters/device-parameters.js.map +0 -1
  406. package/dist/esm/adapter/converters/renderbuffer-formats.js +0 -185
  407. package/dist/esm/adapter/converters/renderbuffer-formats.js.map +0 -1
  408. package/dist/esm/adapter/converters/sampler-parameters.js +0 -208
  409. package/dist/esm/adapter/converters/sampler-parameters.js.map +0 -1
  410. package/dist/esm/adapter/converters/texture-formats.js +0 -954
  411. package/dist/esm/adapter/converters/texture-formats.js.map +0 -1
  412. package/dist/esm/adapter/converters/vertex-formats.js +0 -35
  413. package/dist/esm/adapter/converters/vertex-formats.js.map +0 -1
  414. package/dist/esm/adapter/device-helpers/device-features.js +0 -102
  415. package/dist/esm/adapter/device-helpers/device-features.js.map +0 -1
  416. package/dist/esm/adapter/device-helpers/device-limits.js +0 -91
  417. package/dist/esm/adapter/device-helpers/device-limits.js.map +0 -1
  418. package/dist/esm/adapter/device-helpers/get-device-info.js +0 -44
  419. package/dist/esm/adapter/device-helpers/get-device-info.js.map +0 -1
  420. package/dist/esm/adapter/device-helpers/is-old-ie.js +0 -8
  421. package/dist/esm/adapter/device-helpers/is-old-ie.js.map +0 -1
  422. package/dist/esm/adapter/helpers/attribute-utils.js +0 -81
  423. package/dist/esm/adapter/helpers/attribute-utils.js.map +0 -1
  424. package/dist/esm/adapter/helpers/get-shader-layout.js +0 -306
  425. package/dist/esm/adapter/helpers/get-shader-layout.js.map +0 -1
  426. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js +0 -37
  427. package/dist/esm/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  428. package/dist/esm/adapter/helpers/set-uniform.js +0 -115
  429. package/dist/esm/adapter/helpers/set-uniform.js.map +0 -1
  430. package/dist/esm/adapter/helpers/uniforms.js +0 -99
  431. package/dist/esm/adapter/helpers/uniforms.js.map +0 -1
  432. package/dist/esm/adapter/objects/constants-to-keys.js +0 -42
  433. package/dist/esm/adapter/objects/constants-to-keys.js.map +0 -1
  434. package/dist/esm/adapter/objects/webgl-renderbuffer.js +0 -94
  435. package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +0 -1
  436. package/dist/esm/adapter/objects/webgl-resource.js +0 -216
  437. package/dist/esm/adapter/objects/webgl-resource.js.map +0 -1
  438. package/dist/esm/adapter/objects/webgl-vertex-array-object.js +0 -84
  439. package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +0 -1
  440. package/dist/esm/adapter/resources/webgl-buffer.js +0 -164
  441. package/dist/esm/adapter/resources/webgl-buffer.js.map +0 -1
  442. package/dist/esm/adapter/resources/webgl-command-buffer.js +0 -65
  443. package/dist/esm/adapter/resources/webgl-command-buffer.js.map +0 -1
  444. package/dist/esm/adapter/resources/webgl-command-encoder.js +0 -53
  445. package/dist/esm/adapter/resources/webgl-command-encoder.js.map +0 -1
  446. package/dist/esm/adapter/resources/webgl-external-texture.js +0 -2
  447. package/dist/esm/adapter/resources/webgl-external-texture.js.map +0 -1
  448. package/dist/esm/adapter/resources/webgl-framebuffer.js +0 -265
  449. package/dist/esm/adapter/resources/webgl-framebuffer.js.map +0 -1
  450. package/dist/esm/adapter/resources/webgl-render-pass.js +0 -19
  451. package/dist/esm/adapter/resources/webgl-render-pass.js.map +0 -1
  452. package/dist/esm/adapter/resources/webgl-render-pipeline.js +0 -400
  453. package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +0 -1
  454. package/dist/esm/adapter/resources/webgl-sampler.js +0 -50
  455. package/dist/esm/adapter/resources/webgl-sampler.js.map +0 -1
  456. package/dist/esm/adapter/resources/webgl-shader.js +0 -75
  457. package/dist/esm/adapter/resources/webgl-shader.js.map +0 -1
  458. package/dist/esm/adapter/resources/webgl-texture.js +0 -833
  459. package/dist/esm/adapter/resources/webgl-texture.js.map +0 -1
  460. package/dist/esm/adapter/webgl-canvas-context.js +0 -54
  461. package/dist/esm/adapter/webgl-canvas-context.js.map +0 -1
  462. package/dist/esm/adapter/webgl-device.js +0 -280
  463. package/dist/esm/adapter/webgl-device.js.map +0 -1
  464. package/dist/esm/bundle.js +0 -5
  465. package/dist/esm/bundle.js.map +0 -1
  466. package/dist/esm/classic/accessor.js +0 -144
  467. package/dist/esm/classic/accessor.js.map +0 -1
  468. package/dist/esm/classic/buffer.js +0 -384
  469. package/dist/esm/classic/buffer.js.map +0 -1
  470. package/dist/esm/classic/typed-array-utils.js +0 -112
  471. package/dist/esm/classic/typed-array-utils.js.map +0 -1
  472. package/dist/esm/context/context/context-state.js +0 -26
  473. package/dist/esm/context/context/context-state.js.map +0 -1
  474. package/dist/esm/context/context/create-context.js +0 -49
  475. package/dist/esm/context/context/create-context.js.map +0 -1
  476. package/dist/esm/context/context/device-pixels.js +0 -98
  477. package/dist/esm/context/context/device-pixels.js.map +0 -1
  478. package/dist/esm/context/context/webgl-checks.js +0 -34
  479. package/dist/esm/context/context/webgl-checks.js.map +0 -1
  480. package/dist/esm/context/debug/spector.js +0 -76
  481. package/dist/esm/context/debug/spector.js.map +0 -1
  482. package/dist/esm/context/debug/webgl-developer-tools.js +0 -121
  483. package/dist/esm/context/debug/webgl-developer-tools.js.map +0 -1
  484. package/dist/esm/context/parameters/unified-parameter-api.js +0 -65
  485. package/dist/esm/context/parameters/unified-parameter-api.js.map +0 -1
  486. package/dist/esm/context/parameters/webgl-parameter-tables.js +0 -445
  487. package/dist/esm/context/parameters/webgl-parameter-tables.js.map +0 -1
  488. package/dist/esm/context/polyfill/get-parameter-polyfill.js +0 -91
  489. package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +0 -1
  490. package/dist/esm/context/polyfill/polyfill-context.js +0 -92
  491. package/dist/esm/context/polyfill/polyfill-context.js.map +0 -1
  492. package/dist/esm/context/polyfill/polyfill-table.js +0 -160
  493. package/dist/esm/context/polyfill/polyfill-table.js.map +0 -1
  494. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js +0 -335
  495. package/dist/esm/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  496. package/dist/esm/context/state-tracker/deep-array-equal.js +0 -21
  497. package/dist/esm/context/state-tracker/deep-array-equal.js.map +0 -1
  498. package/dist/esm/context/state-tracker/track-context-state.js +0 -183
  499. package/dist/esm/context/state-tracker/track-context-state.js.map +0 -1
  500. package/dist/esm/context/state-tracker/with-parameters.js +0 -36
  501. package/dist/esm/context/state-tracker/with-parameters.js.map +0 -1
  502. package/dist/esm/index.js +0 -27
  503. package/dist/esm/index.js.map +0 -1
  504. package/dist/esm/init.js +0 -4
  505. package/dist/esm/init.js.map +0 -1
  506. package/dist/esm/types/webgl.js +0 -2
  507. package/dist/esm/types/webgl.js.map +0 -1
  508. package/dist/esm/types.js +0 -2
  509. package/dist/esm/types.js.map +0 -1
  510. package/dist/init.d.ts +0 -2
  511. package/dist/init.d.ts.map +0 -1
  512. package/dist/init.js +0 -4
  513. package/dist/init.js.map +0 -1
  514. package/dist/types/webgl.d.ts +0 -145
  515. package/dist/types/webgl.d.ts.map +0 -1
  516. package/dist/types/webgl.js +0 -2
  517. package/dist/types/webgl.js.map +0 -1
  518. package/src/adapter/converters/renderbuffer-formats.ts +0 -92
  519. package/src/adapter/helpers/attribute-utils.ts +0 -61
  520. package/src/adapter/objects/webgl-vertex-array-object.ts +0 -111
  521. package/src/bundle.ts +0 -4
  522. package/src/classic/buffer.ts +0 -474
  523. package/src/context/context/context-state.ts +0 -41
  524. package/src/context/context/create-context.ts +0 -110
  525. package/src/context/context/device-pixels.ts +0 -152
  526. package/src/init.ts +0 -4
  527. package/src/types/webgl.ts +0 -284
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@luma.gl/webgl",
3
- "version": "9.0.0-alpha.5",
3
+ "version": "9.0.0-alpha.51",
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,17 @@
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.5",
39
- "@luma.gl/constants": "9.0.0-alpha.5",
40
- "@probe.gl/env": "^3.5.0"
47
+ "@luma.gl/constants": "9.0.0-alpha.51",
48
+ "@luma.gl/core": "9.0.0-alpha.51",
49
+ "@probe.gl/env": "^4.0.2"
50
+ },
51
+ "devDependencies": {
52
+ "@luma.gl/test-utils": "9.0.0-alpha.51"
41
53
  },
42
- "gitHead": "729cfdd272836270d0f59793b8a36a2a3aea47ca"
54
+ "gitHead": "368b615bdd46d0006717f004244a942f3d2812e7"
43
55
  }
@@ -1,9 +1,23 @@
1
- import {Device, Parameters, CompareFunction, StencilOperation, log, isObjectEmpty} from '@luma.gl/api';
2
- import GL from '@luma.gl/constants';
3
- import type { GLParameters } from '../../types/webgl';
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {
5
+ Device,
6
+ Parameters,
7
+ CompareFunction,
8
+ StencilOperation,
9
+ log,
10
+ isObjectEmpty,
11
+ BlendOperation,
12
+ BlendFactor
13
+ } from '@luma.gl/core';
14
+ import {GL} from '@luma.gl/constants';
15
+ import type {GLBlendEquation, GLBlendFunction, GLParameters} from '@luma.gl/constants';
4
16
  import {pushContextState, popContextState} from '../../context/state-tracker/track-context-state';
5
- import {setParameters} from '../../context/parameters/unified-parameter-api';
6
- import WebGLDevice from '../webgl-device';
17
+ import {setGLParameters} from '../../context/parameters/unified-parameter-api';
18
+ import {WebGLDevice} from '../webgl-device';
19
+
20
+ /* eslint-disable no-unused-expressions */ // For expression ? gl.enable() : gl.disable()
7
21
 
8
22
  /**
9
23
  * Execute a function with a set of temporary WebGL parameter overrides
@@ -13,7 +27,12 @@ import WebGLDevice from '../webgl-device';
13
27
  * - Restores parameters
14
28
  * - Returns the return value of the supplied function
15
29
  */
16
- export function withDeviceParameters<T = unknown>(device: Device, parameters: Parameters & GLParameters, func: (device?: Device) => T): T {
30
+ export function withDeviceAndGLParameters<T = unknown>(
31
+ device: Device,
32
+ parameters: Parameters,
33
+ glParameters: GLParameters,
34
+ func: (device?: Device) => T
35
+ ): T {
17
36
  if (isObjectEmpty(parameters)) {
18
37
  // Avoid setting state if no parameters provided. Just call and return
19
38
  return func(device);
@@ -23,8 +42,8 @@ export function withDeviceParameters<T = unknown>(device: Device, parameters: Pa
23
42
  // @ts-expect-error
24
43
  pushContextState(device.gl);
25
44
  try {
26
- setParameters(device, parameters);
27
45
  setDeviceParameters(device, parameters);
46
+ setGLParameters(device, glParameters);
28
47
  return func(device);
29
48
  } finally {
30
49
  // @ts-expect-error
@@ -32,11 +51,71 @@ export function withDeviceParameters<T = unknown>(device: Device, parameters: Pa
32
51
  }
33
52
  }
34
53
 
54
+ /**
55
+ * Execute a function with a set of temporary WebGL parameter overrides
56
+ * - Saves current "global" WebGL context settings
57
+ * - Sets the supplies WebGL context parameters,
58
+ * - Executes supplied function
59
+ * - Restores parameters
60
+ * - Returns the return value of the supplied function
61
+ * @deprecated use withDeviceParameters instead
62
+ */
63
+ export function withGLParameters<T = unknown>(
64
+ device: Device,
65
+ parameters: GLParameters,
66
+ func: (device?: Device) => T
67
+ ): T {
68
+ if (isObjectEmpty(parameters)) {
69
+ // Avoid setting state if no parameters provided. Just call and return
70
+ return func(device);
71
+ }
72
+
73
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions
74
+ // @ts-expect-error
75
+ pushContextState(device.gl);
76
+ try {
77
+ setGLParameters(device, parameters);
78
+ return func(device);
79
+ } finally {
80
+ // @ts-expect-error
81
+ popContextState(device.gl);
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Execute a function with a set of temporary WebGL parameter overrides
87
+ * - Saves current "global" WebGL context settings
88
+ * - Sets the supplies WebGL context parameters,
89
+ * - Executes supplied function
90
+ * - Restores parameters
91
+ * - Returns the return value of the supplied function
92
+ */
93
+ export function withDeviceParameters<T = unknown>(
94
+ device: Device,
95
+ parameters: Parameters,
96
+ func: (device?: Device) => T
97
+ ): T {
98
+ if (isObjectEmpty(parameters)) {
99
+ // Avoid setting state if no parameters provided. Just call and return
100
+ return func(device);
101
+ }
102
+
103
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions
104
+ // @ts-expect-error
105
+ pushContextState(device.gl);
106
+ try {
107
+ setDeviceParameters(device, parameters);
108
+ return func(device);
109
+ } finally {
110
+ // @ts-expect-error
111
+ popContextState(device.gl);
112
+ }
113
+ }
35
114
 
36
115
  /** Set WebGPU Style Parameters */
37
116
  export function setDeviceParameters(device: Device, parameters: Parameters) {
38
117
  const webglDevice = WebGLDevice.attach(device);
39
- const {gl, gl2} = webglDevice;
118
+ const {gl} = webglDevice;
40
119
 
41
120
  // RASTERIZATION SETTINGS
42
121
  if (parameters.cullMode) {
@@ -56,10 +135,12 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
56
135
  }
57
136
 
58
137
  if (parameters.frontFace) {
59
- gl.frontFace(map('frontFace', parameters.frontFace, {
60
- ccw: GL.CCW,
61
- cw: GL.CW
62
- }));
138
+ gl.frontFace(
139
+ map('frontFace', parameters.frontFace, {
140
+ ccw: GL.CCW,
141
+ cw: GL.CW
142
+ })
143
+ );
63
144
  }
64
145
 
65
146
  if (parameters.depthBias !== undefined) {
@@ -76,7 +157,7 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
76
157
  gl.depthMask(mapBoolean('depthWriteEnabled', parameters.depthWriteEnabled));
77
158
  }
78
159
 
79
- if (parameters.depthCompare) {
160
+ if (parameters.depthCompare) {
80
161
  parameters.depthCompare !== 'always' ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST);
81
162
  gl.depthFunc(convertCompareFunction('depthCompare', parameters.depthCompare));
82
163
  }
@@ -96,15 +177,24 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
96
177
  const mask = parameters.stencilReadMask || 0xffffffff;
97
178
  const glValue = convertCompareFunction('depthCompare', parameters.stencilCompare);
98
179
  // TODO - ensure back doesn't overwrite
99
- parameters.stencilCompare !== 'always' ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST);
180
+ parameters.stencilCompare !== 'always'
181
+ ? gl.enable(GL.STENCIL_TEST)
182
+ : gl.disable(GL.STENCIL_TEST);
100
183
  gl.stencilFuncSeparate(GL.FRONT, glValue, 0, mask);
101
184
  gl.stencilFuncSeparate(GL.BACK, glValue, 0, mask);
102
185
  }
103
186
 
104
- if (parameters.stencilPassOperation) {
187
+ if (
188
+ parameters.stencilPassOperation &&
189
+ parameters.stencilFailOperation &&
190
+ parameters.stencilDepthFailOperation
191
+ ) {
105
192
  const dppass = convertStencilOperation('stencilPassOperation', parameters.stencilPassOperation);
106
193
  const sfail = convertStencilOperation('stencilFailOperation', parameters.stencilFailOperation);
107
- const dpfail = convertStencilOperation('stencilDepthFailOperation', parameters.stencilDepthFailOperation);
194
+ const dpfail = convertStencilOperation(
195
+ 'stencilDepthFailOperation',
196
+ parameters.stencilDepthFailOperation
197
+ );
108
198
  gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);
109
199
  gl.stencilOpSeparate(GL.BACK, sfail, dpfail, dppass);
110
200
  }
@@ -119,21 +209,19 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
119
209
 
120
210
  // COLOR STATE
121
211
 
122
- // if (parameters.blend) {
123
- // gl.enable(GL.BLEND);
124
-
125
- // const blend = parameters.blend;
212
+ if (parameters.blendColorOperation || parameters.blendAlphaOperation) {
213
+ gl.enable(GL.BLEND);
126
214
 
127
- // let colorEquation = (blend && blend.color && blend.color.operation) || 'add';
128
- // let alphaEquation = (blend && blend.alpha && blend.alpha.operation) || 'add';
129
- // gl.blendEquationSeparate(colorEquation, alphaEquation);
215
+ const colorEquation = convertBlendOperationToEquation('blendColorOperation', parameters.blendColorOperation || 'add');
216
+ const alphaEquation = convertBlendOperationToEquation('blendAlphaOperation', parameters.blendAlphaOperation || 'add');
217
+ gl.blendEquationSeparate(colorEquation, alphaEquation);
130
218
 
131
- // let colorSrcFactor = (blend && blend.color && blend.color.srcFactor) || 'one';
132
- // let colorDstFactor = (blend && blend.color && blend.color.dstFactor) || 'zero';
133
- // let alphaSrcFactor = (blend && blend.alpha && blend.alpha.srcFactor) || 'one';
134
- // let alphaDstFactor = (blend && blend.alpha && blend.alpha.dstFactor) || 'zero';
135
- // gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);
136
- // }
219
+ const colorSrcFactor = convertBlendFactorToFunction('blendColorSrcFactor', parameters.blendColorSrcFactor || 'one');
220
+ const colorDstFactor = convertBlendFactorToFunction('blendColorDstFactor', parameters.blendColorDstFactor || 'zero');
221
+ const alphaSrcFactor = convertBlendFactorToFunction('blendAlphaSrcFactor', parameters.blendAlphaSrcFactor || 'one');
222
+ const alphaDstFactor = convertBlendFactorToFunction('blendAlphaDstFactor', parameters.blendAlphaDstFactor || 'zero');
223
+ gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);
224
+ }
137
225
  }
138
226
 
139
227
  /*
@@ -161,14 +249,14 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
161
249
 
162
250
  export function convertCompareFunction(parameter: string, value: CompareFunction): GL {
163
251
  return map(parameter, value, {
164
- 'never': GL.NEVER,
165
- 'less': GL.LESS,
166
- 'equal': GL.EQUAL,
252
+ never: GL.NEVER,
253
+ less: GL.LESS,
254
+ equal: GL.EQUAL,
167
255
  'less-equal': GL.LEQUAL,
168
- 'greater': GL.GREATER,
256
+ greater: GL.GREATER,
169
257
  'not-equal': GL.NOTEQUAL,
170
258
  'greater-equal': GL.GEQUAL,
171
- 'always': GL.ALWAYS
259
+ always: GL.ALWAYS
172
260
  });
173
261
  }
174
262
 
@@ -187,10 +275,10 @@ export function convertToCompareFunction(parameter: string, value: GL): CompareF
187
275
 
188
276
  function convertStencilOperation(parameter: string, value: StencilOperation): GL {
189
277
  return map(parameter, value, {
190
- 'keep': GL.KEEP,
191
- 'zero': GL.ZERO,
192
- 'replace': GL.REPLACE,
193
- 'invert': GL.INVERT,
278
+ keep: GL.KEEP,
279
+ zero: GL.ZERO,
280
+ replace: GL.REPLACE,
281
+ invert: GL.INVERT,
194
282
  'increment-clamp': GL.INCR,
195
283
  'decrement-clamp': GL.DECR,
196
284
  'increment-wrap': GL.INCR_WRAP,
@@ -198,15 +286,30 @@ function convertStencilOperation(parameter: string, value: StencilOperation): GL
198
286
  });
199
287
  }
200
288
 
201
- function convertBlendOperationToEquation(parameter: string, value: string): number {
289
+ function convertBlendOperationToEquation(parameter: string, value: BlendOperation): GLBlendEquation {
202
290
  return map(parameter, value, {
203
291
  'add': GL.FUNC_ADD,
204
- 'sub': GL.FUNC_SUBTRACT,
292
+ 'subtract': GL.FUNC_SUBTRACT,
205
293
  'reverse-subtract': GL.FUNC_REVERSE_SUBTRACT,
206
294
  // When using a WebGL 2 context, the following values are available additionally:
207
295
  'min': GL.MIN,
208
296
  'max': GL.MAX
209
- });
297
+ } as Record<BlendOperation, GLBlendEquation>);
298
+ }
299
+
300
+ function convertBlendFactorToFunction(parameter: string, value: BlendFactor): GLBlendFunction {
301
+ return map(parameter, value, {
302
+ 'one': GL.ONE,
303
+ 'zero': GL.ZERO,
304
+ 'src-color': GL.SRC_COLOR,
305
+ 'one-minus-src-color': GL.ONE_MINUS_SRC_COLOR,
306
+ 'dst-color': GL.DST_COLOR,
307
+ 'one-minus-dst-color': GL.ONE_MINUS_DST_COLOR,
308
+ 'src-alpha': GL.SRC_ALPHA,
309
+ 'one-minus-src-alpha': GL.ONE_MINUS_SRC_ALPHA,
310
+ 'dst-alpha': GL.DST_ALPHA,
311
+ 'one-minus-dst-alpha': GL.ONE_MINUS_DST_ALPHA,
312
+ } as Record<BlendFactor, GLBlendFunction>);
210
313
  }
211
314
 
212
315
  function message(parameter: string, value: any): string {
@@ -1,15 +1,19 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
1
4
  // SAMPLER FILTERS
2
- import {SamplerParameters} from '@luma.gl/api';
3
- import GL from '@luma.gl/constants';
4
- import {WebGLSamplerParameters} from '../../types/webgl';
5
+ import {SamplerParameters} from '@luma.gl/core';
6
+ import {GL, GLSamplerParameters} from '@luma.gl/constants';
5
7
  import {convertCompareFunction, convertToCompareFunction} from './device-parameters';
6
8
 
9
+ /* eslint-disable consistent-return */
10
+
7
11
  /**
8
12
  * Convert WebGPU-style sampler props to WebGL
9
13
  * @param props
10
14
  * @returns
11
15
  */
12
- export function convertSamplerParametersToWebGL(props: SamplerParameters): WebGLSamplerParameters {
16
+ export function convertSamplerParametersToWebGL(props: SamplerParameters): GLSamplerParameters {
13
17
  const params: Record<number, number> = {};
14
18
  if (props.addressModeU) {
15
19
  params[GL.TEXTURE_WRAP_S] = convertAddressMode(props.addressModeU);
@@ -25,7 +29,10 @@ export function convertSamplerParametersToWebGL(props: SamplerParameters): WebGL
25
29
  }
26
30
  if (props.minFilter || props.mipmapFilter) {
27
31
  // TODO - arbitrary choice of linear?
28
- params[GL.TEXTURE_MIN_FILTER] = convertMinFilterMode(props.minFilter || 'linear', props.mipmapFilter);
32
+ params[GL.TEXTURE_MIN_FILTER] = convertMinFilterMode(
33
+ props.minFilter || 'linear',
34
+ props.mipmapFilter
35
+ );
29
36
  }
30
37
  if (props.lodMinClamp !== undefined) {
31
38
  params[GL.TEXTURE_MIN_LOD] = props.lodMinClamp;
@@ -33,9 +40,11 @@ export function convertSamplerParametersToWebGL(props: SamplerParameters): WebGL
33
40
  if (props.lodMaxClamp !== undefined) {
34
41
  params[GL.TEXTURE_MAX_LOD] = props.lodMaxClamp;
35
42
  }
36
- if (props.compare) {
43
+ if (props.type === 'comparison-sampler') {
37
44
  // Setting prop.compare turns this into a comparison sampler
38
45
  params[GL.TEXTURE_COMPARE_MODE] = GL.COMPARE_REF_TO_TEXTURE;
46
+ }
47
+ if (props.compare) {
39
48
  params[GL.TEXTURE_COMPARE_FUNC] = convertCompareFunction('compare', props.compare);
40
49
  }
41
50
  // Note depends on WebGL extension
@@ -48,30 +57,40 @@ export function convertSamplerParametersToWebGL(props: SamplerParameters): WebGL
48
57
  /** Convert address more */
49
58
  function convertAddressMode(addressMode: 'clamp-to-edge' | 'repeat' | 'mirror-repeat'): GL {
50
59
  switch (addressMode) {
51
- case 'clamp-to-edge': return GL.CLAMP_TO_EDGE;
52
- case 'repeat': return GL.REPEAT;
53
- case 'mirror-repeat': return GL.MIRRORED_REPEAT;
60
+ case 'clamp-to-edge':
61
+ return GL.CLAMP_TO_EDGE;
62
+ case 'repeat':
63
+ return GL.REPEAT;
64
+ case 'mirror-repeat':
65
+ return GL.MIRRORED_REPEAT;
54
66
  }
55
67
  }
56
68
 
57
69
  function convertMaxFilterMode(maxFilter: 'nearest' | 'linear'): GL {
58
70
  switch (maxFilter) {
59
- case 'nearest': return GL.NEAREST;
60
- case 'linear': return GL.LINEAR;
71
+ case 'nearest':
72
+ return GL.NEAREST;
73
+ case 'linear':
74
+ return GL.LINEAR;
61
75
  }
62
76
  }
63
77
 
64
- /**
65
- * WebGPU has separate min filter and mipmap filter,
78
+ /**
79
+ * WebGPU has separate min filter and mipmap filter,
66
80
  * WebGL is combined and effectively offers 6 options
67
81
  */
68
- function convertMinFilterMode(minFilter: 'nearest' | 'linear', mipmapFilter?: 'nearest' | 'linear'): GL {
82
+ function convertMinFilterMode(
83
+ minFilter: 'nearest' | 'linear',
84
+ mipmapFilter?: 'nearest' | 'linear'
85
+ ): GL {
69
86
  if (!mipmapFilter) {
70
87
  return convertMaxFilterMode(minFilter);
71
88
  }
72
89
  switch (minFilter) {
73
- case 'nearest': return mipmapFilter === 'nearest' ? GL.NEAREST_MIPMAP_NEAREST : GL.NEAREST_MIPMAP_LINEAR;
74
- case 'linear': return mipmapFilter === 'nearest' ? GL.LINEAR_MIPMAP_NEAREST : GL.LINEAR_MIPMAP_LINEAR;
90
+ case 'nearest':
91
+ return mipmapFilter === 'nearest' ? GL.NEAREST_MIPMAP_NEAREST : GL.NEAREST_MIPMAP_LINEAR;
92
+ case 'linear':
93
+ return mipmapFilter === 'nearest' ? GL.LINEAR_MIPMAP_NEAREST : GL.LINEAR_MIPMAP_LINEAR;
75
94
  }
76
95
  }
77
96
 
@@ -82,7 +101,7 @@ function convertMinFilterMode(minFilter: 'nearest' | 'linear', mipmapFilter?: 'n
82
101
  * @param props
83
102
  * @returns
84
103
  */
85
- export function convertToSamplerParameters(params: WebGLSamplerParameters): SamplerParameters {
104
+ export function convertToSamplerParameters(params: GLSamplerParameters): SamplerParameters {
86
105
  const props: SamplerParameters = {};
87
106
  if (params[GL.TEXTURE_WRAP_S]) {
88
107
  props.addressModeU = convertToAddressMode(params[GL.TEXTURE_WRAP_S]);
@@ -108,7 +127,13 @@ function convertMinFilterMode(minFilter: 'nearest' | 'linear', mipmapFilter?: 'n
108
127
  if (params[GL.TEXTURE_MAX_LOD]) {
109
128
  props.lodMaxClamp = params[GL.TEXTURE_MAX_LOD];
110
129
  }
111
- if (params[GL.TEXTURE_COMPARE_MODE] === GL.COMPARE_REF_TO_TEXTURE) {
130
+ if (params[GL.TEXTURE_COMPARE_MODE]) {
131
+ props.type =
132
+ params[GL.TEXTURE_COMPARE_MODE] === GL.COMPARE_REF_TO_TEXTURE
133
+ ? 'comparison-sampler'
134
+ : 'color-sampler';
135
+ }
136
+ if (params[GL.TEXTURE_COMPARE_FUNC]) {
112
137
  props.compare = convertToCompareFunction('compare', params[GL.TEXTURE_COMPARE_FUNC]);
113
138
  }
114
139
  // NOTE depends on extension (very common)
@@ -119,50 +144,87 @@ function convertMinFilterMode(minFilter: 'nearest' | 'linear', mipmapFilter?: 'n
119
144
  }
120
145
 
121
146
  /** Convert address more */
122
- function convertToAddressMode(addressMode: number): 'clamp-to-edge' | 'repeat' | 'mirror-repeat' {
147
+ function convertToAddressMode(
148
+ addressMode: GL.CLAMP_TO_EDGE | GL.REPEAT | GL.MIRRORED_REPEAT
149
+ ): 'clamp-to-edge' | 'repeat' | 'mirror-repeat' {
123
150
  switch (addressMode) {
124
- case GL.CLAMP_TO_EDGE: return 'clamp-to-edge';
125
- case GL.REPEAT: return 'repeat';
126
- case GL.MIRRORED_REPEAT: return 'mirror-repeat';
151
+ case GL.CLAMP_TO_EDGE:
152
+ return 'clamp-to-edge';
153
+ case GL.REPEAT:
154
+ return 'repeat';
155
+ case GL.MIRRORED_REPEAT:
156
+ return 'mirror-repeat';
157
+ default:
158
+ throw new Error('address');
127
159
  }
128
160
  }
129
161
 
130
- function convertToMaxFilterMode(filterMode: number): 'nearest' | 'linear' {
162
+ function convertToMaxFilterMode(filterMode: GL.NEAREST | GL.LINEAR): 'nearest' | 'linear' {
131
163
  switch (filterMode) {
132
- case GL.NEAREST: return 'nearest';
133
- case GL.LINEAR: return 'linear';
164
+ case GL.NEAREST:
165
+ return 'nearest';
166
+ case GL.LINEAR:
167
+ return 'linear';
168
+ default:
169
+ throw new Error('maxfilter');
134
170
  }
135
171
  }
136
172
 
173
+ type GLMinFilter =
174
+ | GL.NEAREST
175
+ | GL.LINEAR
176
+ | GL.NEAREST_MIPMAP_NEAREST
177
+ | GL.LINEAR_MIPMAP_NEAREST
178
+ | GL.NEAREST_MIPMAP_LINEAR
179
+ | GL.LINEAR_MIPMAP_LINEAR;
180
+
137
181
  /** WebGPU has separate min filter and mipmap filter, WebGL is combined */
138
- function convertToMinFilterMode(filterMode: number): 'nearest' | 'linear' {
182
+ function convertToMinFilterMode(filterMode: GLMinFilter): 'nearest' | 'linear' {
139
183
  switch (filterMode) {
140
184
  // TODO is this correct?
141
- case GL.NEAREST: return 'nearest';
142
- case GL.LINEAR: return 'linear';
143
- case GL.NEAREST_MIPMAP_NEAREST: return 'nearest';
144
- case GL.LINEAR_MIPMAP_NEAREST: return 'linear';
145
- case GL.NEAREST_MIPMAP_LINEAR: return 'nearest';
146
- case GL.LINEAR_MIPMAP_LINEAR: return 'linear';
185
+ case GL.NEAREST:
186
+ return 'nearest';
187
+ case GL.LINEAR:
188
+ return 'linear';
189
+ case GL.NEAREST_MIPMAP_NEAREST:
190
+ return 'nearest';
191
+ case GL.LINEAR_MIPMAP_NEAREST:
192
+ return 'linear';
193
+ case GL.NEAREST_MIPMAP_LINEAR:
194
+ return 'nearest';
195
+ case GL.LINEAR_MIPMAP_LINEAR:
196
+ return 'linear';
197
+ default:
198
+ throw new Error('minfilter');
147
199
  }
148
200
  }
149
201
 
150
- function convertToMipmapFilterMode(filterMode: number): 'nearest' | 'linear' {
202
+ function convertToMipmapFilterMode(filterMode: GLMinFilter): 'nearest' | 'linear' {
151
203
  switch (filterMode) {
152
204
  // TODO is this correct?
153
- case GL.NEAREST: return 'nearest';
154
- case GL.LINEAR: return 'linear';
155
- case GL.NEAREST_MIPMAP_NEAREST: return 'nearest';
156
- case GL.LINEAR_MIPMAP_NEAREST: return 'nearest';
157
- case GL.NEAREST_MIPMAP_LINEAR: return 'linear';
158
- case GL.LINEAR_MIPMAP_LINEAR: return 'linear';
205
+ case GL.NEAREST:
206
+ return 'nearest';
207
+ case GL.LINEAR:
208
+ return 'linear';
209
+ case GL.NEAREST_MIPMAP_NEAREST:
210
+ return 'nearest';
211
+ case GL.LINEAR_MIPMAP_NEAREST:
212
+ return 'nearest';
213
+ case GL.NEAREST_MIPMAP_LINEAR:
214
+ return 'linear';
215
+ case GL.LINEAR_MIPMAP_LINEAR:
216
+ return 'linear';
217
+ default:
218
+ throw new Error('mipmap');
159
219
  }
160
220
  }
161
221
 
162
222
  /**
163
223
  * Override sampler settings that are not supported by Non-Power-of-Two textures in WebGL1.
164
- */
165
- export function updateSamplerParametersForNPOT(parameters: WebGLSamplerParameters): WebGLSamplerParameters {
224
+ */
225
+ export function updateSamplerParametersForNPOT(
226
+ parameters: GLSamplerParameters
227
+ ): GLSamplerParameters {
166
228
  const newParameters = {...parameters};
167
229
  if (parameters[GL.TEXTURE_MIN_FILTER] !== GL.NEAREST) {
168
230
  // log.warn(`texture: ${this} is Non-Power-Of-Two, forcing TEXTURE_MIN_FILTER to LINEAR`)();
@@ -0,0 +1,44 @@
1
+ // luma.gl, MIT license
2
+ // Copyright (c) vis.gl contributors
3
+
4
+ import {GL} from '@luma.gl/constants';
5
+ import {ShaderAttributeType, ShaderDataType} from '@luma.gl/core';
6
+
7
+ /** Get shader attribute type from GL constants */
8
+ export function getShaderAttributeTypeFromGL(type: GL, components: 1 | 2 | 3 | 4): ShaderAttributeType {
9
+ const dataType = getShaderDataTypeFromGL(type);
10
+ switch (components) {
11
+ case 1: return dataType;
12
+ case 2: return `vec2<${dataType}>`;
13
+ case 3: return `vec2<${dataType}>`;
14
+ case 4: return `vec2<${dataType}>`;
15
+ default: throw new Error(String(components));
16
+ }
17
+ }
18
+
19
+ /** Get shader data type from GL constants */
20
+ export function getShaderDataTypeFromGL(type: GL): ShaderDataType {
21
+ switch (type) {
22
+ case GL.INT: return 'i32';
23
+ case GL.UNSIGNED_INT: return 'u32';
24
+ case GL.SHORT: return 'i32';
25
+ case GL.UNSIGNED_SHORT: return 'u32';
26
+ case GL.BYTE: return 'i32';
27
+ case GL.UNSIGNED_BYTE: return 'u32';
28
+ case GL.FLOAT: return 'f32';
29
+ case GL.HALF_FLOAT: return 'f16';
30
+ default: throw new Error(String(type));
31
+ }
32
+ }
33
+
34
+ /** GetGL constant from shader data type */
35
+ export function getGLFromShaderDataType(type: ShaderDataType): GL.INT | GL.UNSIGNED_INT | GL.FLOAT | GL.HALF_FLOAT {
36
+ switch (type) {
37
+ // TODO
38
+ case 'i32': return GL.INT;
39
+ case 'u32': return GL.UNSIGNED_INT;
40
+ case 'f32': return GL.FLOAT;
41
+ case 'f16': return GL.HALF_FLOAT;
42
+ default: throw new Error(String(type));
43
+ }
44
+ }