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

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