@luma.gl/webgl 9.0.0-beta.1 → 9.0.0-beta.10

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 (285) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +295 -156
  3. package/dist/adapter/converters/sampler-parameters.d.ts +0 -4
  4. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.js +73 -67
  6. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/shader-formats.js +53 -46
  8. package/dist/adapter/converters/texture-formats.d.ts +17 -21
  9. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  10. package/dist/adapter/converters/texture-formats.js +481 -879
  11. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  12. package/dist/adapter/converters/vertex-formats.js +53 -61
  13. package/dist/adapter/device-helpers/webgl-device-features.d.ts +20 -0
  14. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  15. package/dist/adapter/device-helpers/webgl-device-features.js +98 -0
  16. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  17. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  18. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  19. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  20. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  21. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  22. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
  23. package/dist/adapter/helpers/decode-webgl-types.js +88 -76
  24. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  25. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  26. package/dist/adapter/helpers/get-shader-layout.js +261 -225
  27. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  28. package/dist/adapter/helpers/parse-shader-compiler-log.js +47 -37
  29. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  30. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  31. package/dist/adapter/helpers/set-uniform.js +68 -82
  32. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  33. package/dist/adapter/helpers/webgl-topology-utils.js +78 -93
  34. package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
  35. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  36. package/dist/adapter/objects/constants-to-keys.js +19 -12
  37. package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
  38. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  39. package/dist/adapter/objects/webgl-renderbuffer.js +86 -77
  40. package/dist/adapter/objects/webgl-resource.d.ts +3 -25
  41. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  42. package/dist/adapter/objects/webgl-resource.js +102 -147
  43. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  44. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgl-buffer.js +159 -117
  46. package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
  47. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  48. package/dist/adapter/resources/webgl-command-buffer.js +266 -168
  49. package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
  50. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-command-encoder.js +33 -39
  52. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  53. package/dist/adapter/resources/webgl-framebuffer.d.ts +8 -12
  54. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-framebuffer.js +174 -139
  56. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  57. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  58. package/dist/adapter/resources/webgl-query-set.js +136 -0
  59. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
  60. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgl-render-pass.js +124 -90
  62. package/dist/adapter/resources/webgl-render-pipeline.d.ts +15 -6
  63. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgl-render-pipeline.js +362 -221
  65. package/dist/adapter/resources/webgl-sampler.d.ts +1 -3
  66. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  67. package/dist/adapter/resources/webgl-sampler.js +43 -33
  68. package/dist/adapter/resources/webgl-shader.d.ts +12 -2
  69. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-shader.js +114 -47
  71. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  72. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  73. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  74. package/dist/adapter/resources/webgl-texture.d.ts +8 -10
  75. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  76. package/dist/adapter/resources/webgl-texture.js +616 -694
  77. package/dist/adapter/resources/webgl-transform-feedback.d.ts +2 -2
  78. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-transform-feedback.js +141 -143
  80. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
  81. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  82. package/dist/adapter/resources/webgl-vertex-array.js +229 -157
  83. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  84. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  85. package/dist/adapter/webgl-canvas-context.js +58 -36
  86. package/dist/adapter/webgl-device.d.ts +50 -44
  87. package/dist/adapter/webgl-device.d.ts.map +1 -1
  88. package/dist/adapter/webgl-device.js +427 -352
  89. package/dist/classic/accessor.d.ts.map +1 -1
  90. package/dist/classic/accessor.js +132 -101
  91. package/dist/classic/clear.d.ts +2 -2
  92. package/dist/classic/clear.d.ts.map +1 -1
  93. package/dist/classic/clear.js +73 -72
  94. package/dist/classic/copy-and-blit.d.ts +1 -1
  95. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  96. package/dist/classic/copy-and-blit.js +174 -175
  97. package/dist/classic/format-utils.d.ts +2 -2
  98. package/dist/classic/format-utils.d.ts.map +1 -1
  99. package/dist/classic/format-utils.js +39 -32
  100. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  101. package/dist/classic/typed-array-utils.js +96 -81
  102. package/dist/context/debug/spector.d.ts.map +1 -1
  103. package/dist/context/debug/spector.js +55 -50
  104. package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
  105. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  106. package/dist/context/debug/webgl-developer-tools.js +104 -77
  107. package/dist/context/{context → helpers}/create-browser-context.d.ts +1 -6
  108. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  109. package/dist/context/helpers/create-browser-context.js +67 -0
  110. package/dist/context/{polyfill/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -2
  111. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  112. package/dist/context/helpers/webgl-context-data.js +21 -0
  113. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  114. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  115. package/dist/context/helpers/webgl-extensions.js +10 -0
  116. package/dist/context/parameters/unified-parameter-api.d.ts +3 -4
  117. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  118. package/dist/context/parameters/unified-parameter-api.js +92 -47
  119. package/dist/context/parameters/webgl-parameter-tables.d.ts +109 -99
  120. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  121. package/dist/context/parameters/webgl-parameter-tables.js +463 -404
  122. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  123. package/dist/context/state-tracker/deep-array-equal.js +19 -14
  124. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  125. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  126. package/dist/context/state-tracker/track-context-state.js +188 -123
  127. package/dist/context/state-tracker/with-parameters.d.ts +2 -3
  128. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  129. package/dist/context/state-tracker/with-parameters.js +42 -28
  130. package/dist/dist.dev.js +4465 -7235
  131. package/dist/dist.min.js +10 -0
  132. package/dist/index.cjs +2146 -3116
  133. package/dist/index.cjs.map +7 -0
  134. package/dist/index.d.ts +25 -31
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +19 -10
  137. package/dist/types.d.ts.map +1 -1
  138. package/dist/types.js +3 -1
  139. package/dist.min.js +9 -42
  140. package/package.json +10 -15
  141. package/src/adapter/converters/device-parameters.ts +114 -28
  142. package/src/adapter/converters/sampler-parameters.ts +12 -20
  143. package/src/adapter/converters/shader-formats.ts +47 -22
  144. package/src/adapter/converters/texture-formats.ts +183 -227
  145. package/src/adapter/converters/vertex-formats.ts +3 -3
  146. package/src/adapter/device-helpers/webgl-device-features.ts +121 -0
  147. package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +30 -22
  148. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  149. package/src/adapter/helpers/decode-webgl-types.ts +13 -7
  150. package/src/adapter/helpers/get-shader-layout.ts +21 -31
  151. package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
  152. package/src/adapter/helpers/set-uniform.ts +3 -4
  153. package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
  154. package/src/adapter/objects/constants-to-keys.ts +3 -2
  155. package/src/adapter/objects/webgl-renderbuffer.ts +38 -16
  156. package/src/adapter/objects/webgl-resource.ts +8 -141
  157. package/src/adapter/resources/webgl-buffer.ts +10 -14
  158. package/src/adapter/resources/webgl-command-buffer.ts +24 -34
  159. package/src/adapter/resources/webgl-command-encoder.ts +14 -11
  160. package/src/adapter/resources/webgl-external-texture.ts +7 -7
  161. package/src/adapter/resources/webgl-framebuffer.ts +65 -58
  162. package/src/adapter/resources/webgl-query-set.ts +171 -0
  163. package/src/adapter/resources/webgl-render-pass.ts +27 -18
  164. package/src/adapter/resources/webgl-render-pipeline.ts +148 -73
  165. package/src/adapter/resources/webgl-sampler.ts +7 -10
  166. package/src/adapter/resources/webgl-shader.ts +65 -11
  167. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  168. package/src/adapter/resources/webgl-texture.ts +43 -106
  169. package/src/adapter/resources/webgl-transform-feedback.ts +16 -22
  170. package/src/adapter/resources/webgl-vertex-array.ts +20 -21
  171. package/src/adapter/webgl-canvas-context.ts +7 -11
  172. package/src/adapter/webgl-device.ts +142 -162
  173. package/src/classic/accessor.ts +5 -4
  174. package/src/classic/clear.ts +25 -20
  175. package/src/classic/copy-and-blit.ts +12 -6
  176. package/src/classic/format-utils.ts +2 -1
  177. package/src/classic/typed-array-utils.ts +3 -7
  178. package/src/context/debug/spector.ts +9 -6
  179. package/src/context/debug/webgl-developer-tools.ts +31 -20
  180. package/src/context/{context → helpers}/create-browser-context.ts +9 -33
  181. package/src/context/{polyfill/context-data.ts → helpers/webgl-context-data.ts} +3 -2
  182. package/src/context/helpers/webgl-extensions.ts +17 -0
  183. package/src/context/parameters/unified-parameter-api.ts +6 -17
  184. package/src/context/parameters/webgl-parameter-tables.ts +118 -90
  185. package/src/context/state-tracker/deep-array-equal.ts +2 -1
  186. package/src/context/state-tracker/track-context-state.ts +29 -23
  187. package/src/context/state-tracker/with-parameters.ts +8 -8
  188. package/src/index.ts +16 -56
  189. package/src/types.ts +2 -1
  190. package/dist/adapter/converters/device-parameters.js.map +0 -1
  191. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  192. package/dist/adapter/converters/shader-formats.js.map +0 -1
  193. package/dist/adapter/converters/texture-formats.js.map +0 -1
  194. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  195. package/dist/adapter/device-helpers/device-features.d.ts +0 -9
  196. package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
  197. package/dist/adapter/device-helpers/device-features.js +0 -96
  198. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  199. package/dist/adapter/device-helpers/device-limits.d.ts +0 -52
  200. package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
  201. package/dist/adapter/device-helpers/device-limits.js +0 -87
  202. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  203. package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
  204. package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
  205. package/dist/adapter/device-helpers/get-device-info.js +0 -71
  206. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  207. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  208. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  209. package/dist/adapter/device-helpers/is-old-ie.js +0 -9
  210. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  211. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  212. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  213. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  214. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  215. package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
  216. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  217. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  218. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  219. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  220. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  221. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  222. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  223. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  224. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  225. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  226. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  227. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  228. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  229. package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
  230. package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
  231. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  232. package/dist/adapter/webgl-device.js.map +0 -1
  233. package/dist/classic/accessor.js.map +0 -1
  234. package/dist/classic/clear.js.map +0 -1
  235. package/dist/classic/copy-and-blit.js.map +0 -1
  236. package/dist/classic/format-utils.js.map +0 -1
  237. package/dist/classic/typed-array-utils.js.map +0 -1
  238. package/dist/context/context/create-browser-context.d.ts.map +0 -1
  239. package/dist/context/context/create-browser-context.js +0 -53
  240. package/dist/context/context/create-browser-context.js.map +0 -1
  241. package/dist/context/context/create-headless-context.d.ts +0 -9
  242. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  243. package/dist/context/context/create-headless-context.js +0 -42
  244. package/dist/context/context/create-headless-context.js.map +0 -1
  245. package/dist/context/context/webgl-checks.d.ts +0 -13
  246. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  247. package/dist/context/context/webgl-checks.js +0 -31
  248. package/dist/context/context/webgl-checks.js.map +0 -1
  249. package/dist/context/debug/spector.js.map +0 -1
  250. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  251. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  252. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  253. package/dist/context/polyfill/context-data.d.ts.map +0 -1
  254. package/dist/context/polyfill/context-data.js +0 -12
  255. package/dist/context/polyfill/context-data.js.map +0 -1
  256. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  257. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  258. package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
  259. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  260. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  261. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  262. package/dist/context/polyfill/polyfill-context.js +0 -87
  263. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  264. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  265. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  266. package/dist/context/polyfill/polyfill-table.js +0 -137
  267. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  268. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  269. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  270. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
  271. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  272. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  273. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  274. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  275. package/dist/index.js.map +0 -1
  276. package/dist/types.js.map +0 -1
  277. package/src/adapter/device-helpers/device-features.ts +0 -161
  278. package/src/adapter/device-helpers/device-limits.ts +0 -155
  279. package/src/adapter/device-helpers/is-old-ie.ts +0 -14
  280. package/src/context/context/create-headless-context.ts +0 -51
  281. package/src/context/context/webgl-checks.ts +0 -51
  282. package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
  283. package/src/context/polyfill/polyfill-context.ts +0 -104
  284. package/src/context/polyfill/polyfill-table.ts +0 -167
  285. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -365
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@luma.gl/webgl",
3
- "version": "9.0.0-beta.1",
4
- "description": "WebGL2 adapter for the luma.gl API",
3
+ "version": "9.0.0-beta.10",
4
+ "description": "WebGL2 adapter for the luma.gl core API",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "publishConfig": {
@@ -34,22 +34,17 @@
34
34
  "README.md"
35
35
  ],
36
36
  "sideEffects": false,
37
- "browser": {
38
- "gl": false,
39
- "gl/wrap": false
40
- },
41
37
  "scripts": {
42
- "build-bundle": "ocular-bundle ./src/index.ts",
43
- "pre-build": "npm run build-bundle && npm run build-bundle -- --env=dev"
38
+ "build-minified-bundle": "ocular-bundle ./bundle.ts --output=dist/dist.min.js",
39
+ "build-dev-bundle": "ocular-bundle ./bundle.ts --output=dist/dist.dev.js --env=dev",
40
+ "prepublishOnly": "npm run build-minified-bundle && npm run build-dev-bundle"
41
+ },
42
+ "peerDependencies": {
43
+ "@luma.gl/core": "^9.0.0-beta"
44
44
  },
45
45
  "dependencies": {
46
- "@babel/runtime": "^7.0.0",
47
- "@luma.gl/constants": "9.0.0-beta.1",
48
- "@luma.gl/core": "9.0.0-beta.1",
46
+ "@luma.gl/constants": "9.0.0-beta.10",
49
47
  "@probe.gl/env": "^4.0.2"
50
48
  },
51
- "devDependencies": {
52
- "@luma.gl/test-utils": "9.0.0-beta.1"
53
- },
54
- "gitHead": "5fb42f651e80825336a372ca5a66de7d55611ddf"
49
+ "gitHead": "1b36500a878e1b365425826750320dde7d6929bb"
55
50
  }
@@ -1,4 +1,5 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  import {
@@ -28,7 +29,7 @@ import {WebGLDevice} from '../webgl-device';
28
29
  * - Returns the return value of the supplied function
29
30
  */
30
31
  export function withDeviceAndGLParameters<T = unknown>(
31
- device: Device,
32
+ device: Device,
32
33
  parameters: Parameters,
33
34
  glParameters: GLParameters,
34
35
  func: (device?: Device) => T
@@ -39,15 +40,14 @@ export function withDeviceAndGLParameters<T = unknown>(
39
40
  }
40
41
 
41
42
  // Wrap in a try-catch to ensure that parameters are restored on exceptions
42
- // @ts-expect-error
43
- pushContextState(device.gl);
43
+ const webglDevice = device as WebGLDevice;
44
+ pushContextState(webglDevice.gl);
44
45
  try {
45
46
  setDeviceParameters(device, parameters);
46
- setGLParameters(device, glParameters);
47
+ setGLParameters(webglDevice.gl, glParameters);
47
48
  return func(device);
48
49
  } finally {
49
- // @ts-expect-error
50
- popContextState(device.gl);
50
+ popContextState(webglDevice.gl);
51
51
  }
52
52
  }
53
53
 
@@ -71,14 +71,13 @@ export function withGLParameters<T = unknown>(
71
71
  }
72
72
 
73
73
  // Wrap in a try-catch to ensure that parameters are restored on exceptions
74
- // @ts-expect-error
75
- pushContextState(device.gl);
74
+ const webglDevice = device as WebGLDevice;
75
+ pushContextState(webglDevice.gl);
76
76
  try {
77
- setGLParameters(device, parameters);
77
+ setGLParameters(webglDevice.gl, parameters);
78
78
  return func(device);
79
79
  } finally {
80
- // @ts-expect-error
81
- popContextState(device.gl);
80
+ popContextState(webglDevice.gl);
82
81
  }
83
82
  }
84
83
 
@@ -114,7 +113,7 @@ export function withDeviceParameters<T = unknown>(
114
113
 
115
114
  /** Set WebGPU Style Parameters */
116
115
  export function setDeviceParameters(device: Device, parameters: Parameters) {
117
- const webglDevice = WebGLDevice.attach(device);
116
+ const webglDevice = device as WebGLDevice;
118
117
  const {gl} = webglDevice;
119
118
 
120
119
  // RASTERIZATION SETTINGS
@@ -143,6 +142,13 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
143
142
  );
144
143
  }
145
144
 
145
+ if (parameters.unclippedDepth) {
146
+ if (device.features.has('depth-clip-control')) {
147
+ // EXT_depth_clamp
148
+ gl.enable(GL.DEPTH_CLAMP_EXT);
149
+ }
150
+ }
151
+
146
152
  if (parameters.depthBias !== undefined) {
147
153
  gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);
148
154
  }
@@ -151,6 +157,66 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
151
157
  // // Handled by depthBias
152
158
  // },
153
159
 
160
+ // WEBGL EXTENSIONS
161
+
162
+ if (device.features.has('provoking-vertex-webgl')) {
163
+ const extensions = webglDevice.getExtension('WEBGL_provoking_vertex');
164
+ const ext = extensions.WEBGL_provoking_vertex;
165
+
166
+ if (parameters.provokingVertex) {
167
+ const vertex = map('provokingVertex', parameters.provokingVertex, {
168
+ first: GL.FIRST_VERTEX_CONVENTION_WEBGL,
169
+ last: GL.LAST_VERTEX_CONVENTION_WEBGL
170
+ });
171
+ ext?.provokingVertexWEBGL(vertex);
172
+ }
173
+ }
174
+
175
+ if (device.features.has('polygon-mode-webgl')) {
176
+ const extensions = webglDevice.getExtension('WEBGL_polygon_mode');
177
+ const ext = extensions.WEBGL_polygon_mode;
178
+
179
+ if (parameters.polygonMode) {
180
+ const mode = map('polygonMode', parameters.provokingVertex, {
181
+ fill: GL.FILL_WEBGL,
182
+ lint: GL.LINE_WEBGL
183
+ });
184
+ ext?.polygonModeWEBGL(GL.FRONT, mode);
185
+ ext?.polygonModeWEBGL(GL.BACK, mode);
186
+ }
187
+
188
+ if (parameters.polygonOffsetLine) {
189
+ gl.enable(GL.POLYGON_OFFSET_LINE_WEBGL);
190
+ }
191
+ }
192
+
193
+ if (device.features.has('shader-clip-cull-distance-webgl')) {
194
+ if (parameters.clipDistance0) {
195
+ gl.enable(GL.CLIP_DISTANCE0_WEBGL);
196
+ }
197
+ if (parameters.clipDistance1) {
198
+ gl.enable(GL.CLIP_DISTANCE1_WEBGL);
199
+ }
200
+ if (parameters.clipDistance2) {
201
+ gl.enable(GL.CLIP_DISTANCE2_WEBGL);
202
+ }
203
+ if (parameters.clipDistance3) {
204
+ gl.enable(GL.CLIP_DISTANCE3_WEBGL);
205
+ }
206
+ if (parameters.clipDistance4) {
207
+ gl.enable(GL.CLIP_DISTANCE4_WEBGL);
208
+ }
209
+ if (parameters.clipDistance5) {
210
+ gl.enable(GL.CLIP_DISTANCE5_WEBGL);
211
+ }
212
+ if (parameters.clipDistance6) {
213
+ gl.enable(GL.CLIP_DISTANCE6_WEBGL);
214
+ }
215
+ if (parameters.clipDistance7) {
216
+ gl.enable(GL.CLIP_DISTANCE7_WEBGL);
217
+ }
218
+ }
219
+
154
220
  // DEPTH STENCIL
155
221
 
156
222
  if (parameters.depthWriteEnabled !== undefined) {
@@ -212,14 +278,32 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
212
278
  if (parameters.blendColorOperation || parameters.blendAlphaOperation) {
213
279
  gl.enable(GL.BLEND);
214
280
 
215
- const colorEquation = convertBlendOperationToEquation('blendColorOperation', parameters.blendColorOperation || 'add');
216
- const alphaEquation = convertBlendOperationToEquation('blendAlphaOperation', parameters.blendAlphaOperation || 'add');
281
+ const colorEquation = convertBlendOperationToEquation(
282
+ 'blendColorOperation',
283
+ parameters.blendColorOperation || 'add'
284
+ );
285
+ const alphaEquation = convertBlendOperationToEquation(
286
+ 'blendAlphaOperation',
287
+ parameters.blendAlphaOperation || 'add'
288
+ );
217
289
  gl.blendEquationSeparate(colorEquation, alphaEquation);
218
290
 
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');
291
+ const colorSrcFactor = convertBlendFactorToFunction(
292
+ 'blendColorSrcFactor',
293
+ parameters.blendColorSrcFactor || 'one'
294
+ );
295
+ const colorDstFactor = convertBlendFactorToFunction(
296
+ 'blendColorDstFactor',
297
+ parameters.blendColorDstFactor || 'zero'
298
+ );
299
+ const alphaSrcFactor = convertBlendFactorToFunction(
300
+ 'blendAlphaSrcFactor',
301
+ parameters.blendAlphaSrcFactor || 'one'
302
+ );
303
+ const alphaDstFactor = convertBlendFactorToFunction(
304
+ 'blendAlphaDstFactor',
305
+ parameters.blendAlphaDstFactor || 'zero'
306
+ );
223
307
  gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);
224
308
  }
225
309
  }
@@ -286,21 +370,23 @@ function convertStencilOperation(parameter: string, value: StencilOperation): GL
286
370
  });
287
371
  }
288
372
 
289
- function convertBlendOperationToEquation(parameter: string, value: BlendOperation): GLBlendEquation {
373
+ function convertBlendOperationToEquation(
374
+ parameter: string,
375
+ value: BlendOperation
376
+ ): GLBlendEquation {
290
377
  return map(parameter, value, {
291
- 'add': GL.FUNC_ADD,
292
- 'subtract': GL.FUNC_SUBTRACT,
378
+ add: GL.FUNC_ADD,
379
+ subtract: GL.FUNC_SUBTRACT,
293
380
  '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
381
+ min: GL.MIN,
382
+ max: GL.MAX
297
383
  } as Record<BlendOperation, GLBlendEquation>);
298
384
  }
299
385
 
300
386
  function convertBlendFactorToFunction(parameter: string, value: BlendFactor): GLBlendFunction {
301
387
  return map(parameter, value, {
302
- 'one': GL.ONE,
303
- 'zero': GL.ZERO,
388
+ one: GL.ONE,
389
+ zero: GL.ZERO,
304
390
  'src-color': GL.SRC_COLOR,
305
391
  'one-minus-src-color': GL.ONE_MINUS_SRC_COLOR,
306
392
  'dst-color': GL.DST_COLOR,
@@ -308,7 +394,7 @@ function convertBlendFactorToFunction(parameter: string, value: BlendFactor): GL
308
394
  'src-alpha': GL.SRC_ALPHA,
309
395
  'one-minus-src-alpha': GL.ONE_MINUS_SRC_ALPHA,
310
396
  'dst-alpha': GL.DST_ALPHA,
311
- 'one-minus-dst-alpha': GL.ONE_MINUS_DST_ALPHA,
397
+ 'one-minus-dst-alpha': GL.ONE_MINUS_DST_ALPHA
312
398
  } as Record<BlendFactor, GLBlendFunction>);
313
399
  }
314
400
 
@@ -1,4 +1,5 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  // SAMPLER FILTERS
@@ -52,27 +53,12 @@ export function convertSamplerParametersToWebGL(props: SamplerProps): GLSamplerP
52
53
  return params;
53
54
  }
54
55
 
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
56
  // HELPERS
73
57
 
74
58
  /** Convert address more */
75
- function convertAddressMode(addressMode: 'clamp-to-edge' | 'repeat' | 'mirror-repeat'): GL.CLAMP_TO_EDGE | GL.REPEAT | GL.MIRRORED_REPEAT {
59
+ function convertAddressMode(
60
+ addressMode: 'clamp-to-edge' | 'repeat' | 'mirror-repeat'
61
+ ): GL.CLAMP_TO_EDGE | GL.REPEAT | GL.MIRRORED_REPEAT {
76
62
  switch (addressMode) {
77
63
  case 'clamp-to-edge':
78
64
  return GL.CLAMP_TO_EDGE;
@@ -99,7 +85,13 @@ function convertMaxFilterMode(maxFilter: 'nearest' | 'linear'): GL.NEAREST | GL.
99
85
  function convertMinFilterMode(
100
86
  minFilter: 'nearest' | 'linear',
101
87
  mipmapFilter?: 'nearest' | 'linear'
102
- ): GL.NEAREST | GL.LINEAR | GL.NEAREST_MIPMAP_NEAREST | GL.LINEAR_MIPMAP_NEAREST | GL.NEAREST_MIPMAP_LINEAR | GL.LINEAR_MIPMAP_LINEAR {
88
+ ):
89
+ | GL.NEAREST
90
+ | GL.LINEAR
91
+ | GL.NEAREST_MIPMAP_NEAREST
92
+ | GL.LINEAR_MIPMAP_NEAREST
93
+ | GL.NEAREST_MIPMAP_LINEAR
94
+ | GL.LINEAR_MIPMAP_LINEAR {
103
95
  if (!mipmapFilter) {
104
96
  return convertMaxFilterMode(minFilter);
105
97
  }
@@ -1,44 +1,69 @@
1
- // luma.gl, MIT license
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
2
3
  // Copyright (c) vis.gl contributors
3
4
 
4
5
  import {GL} from '@luma.gl/constants';
5
6
  import {ShaderAttributeType, ShaderDataType} from '@luma.gl/core';
6
7
 
7
8
  /** Get shader attribute type from GL constants */
8
- export function getShaderAttributeTypeFromGL(type: GL, components: 1 | 2 | 3 | 4): ShaderAttributeType {
9
+ export function getShaderAttributeTypeFromGL(
10
+ type: GL,
11
+ components: 1 | 2 | 3 | 4
12
+ ): ShaderAttributeType {
9
13
  const dataType = getShaderDataTypeFromGL(type);
10
14
  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));
15
+ case 1:
16
+ return dataType;
17
+ case 2:
18
+ return `vec2<${dataType}>`;
19
+ case 3:
20
+ return `vec2<${dataType}>`;
21
+ case 4:
22
+ return `vec2<${dataType}>`;
23
+ default:
24
+ throw new Error(String(components));
16
25
  }
17
26
  }
18
27
 
19
28
  /** Get shader data type from GL constants */
20
29
  export function getShaderDataTypeFromGL(type: GL): ShaderDataType {
21
30
  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
+ case GL.INT:
32
+ return 'i32';
33
+ case GL.UNSIGNED_INT:
34
+ return 'u32';
35
+ case GL.SHORT:
36
+ return 'i32';
37
+ case GL.UNSIGNED_SHORT:
38
+ return 'u32';
39
+ case GL.BYTE:
40
+ return 'i32';
41
+ case GL.UNSIGNED_BYTE:
42
+ return 'u32';
43
+ case GL.FLOAT:
44
+ return 'f32';
45
+ case GL.HALF_FLOAT:
46
+ return 'f16';
47
+ default:
48
+ throw new Error(String(type));
31
49
  }
32
50
  }
33
51
 
34
52
  /** GetGL constant from shader data type */
35
- export function getGLFromShaderDataType(type: ShaderDataType): GL.INT | GL.UNSIGNED_INT | GL.FLOAT | GL.HALF_FLOAT {
53
+ export function getGLFromShaderDataType(
54
+ type: ShaderDataType
55
+ ): GL.INT | GL.UNSIGNED_INT | GL.FLOAT | GL.HALF_FLOAT {
36
56
  switch (type) {
37
57
  // 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));
58
+ case 'i32':
59
+ return GL.INT;
60
+ case 'u32':
61
+ return GL.UNSIGNED_INT;
62
+ case 'f32':
63
+ return GL.FLOAT;
64
+ case 'f16':
65
+ return GL.HALF_FLOAT;
66
+ default:
67
+ throw new Error(String(type));
43
68
  }
44
69
  }