@luma.gl/webgl 9.0.0-alpha.9 → 9.0.0-beta.1

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