@luma.gl/webgl 9.0.0-beta.4 → 9.0.0-beta.6

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 (288) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +297 -155
  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 +13 -19
  9. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  10. package/dist/adapter/converters/texture-formats.js +474 -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/device-features.d.ts +2 -5
  14. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  15. package/dist/adapter/device-helpers/device-features.js +56 -87
  16. package/dist/adapter/device-helpers/device-limits.d.ts +2 -4
  17. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  18. package/dist/adapter/device-helpers/device-limits.js +88 -83
  19. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  20. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  21. package/dist/adapter/device-helpers/get-device-info.js +79 -63
  22. package/dist/adapter/device-helpers/webgl-device-features.d.ts +19 -0
  23. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  24. package/dist/adapter/device-helpers/webgl-device-features.js +86 -0
  25. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  26. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  27. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  28. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  29. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  30. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  31. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
  32. package/dist/adapter/helpers/decode-webgl-types.js +88 -76
  33. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  34. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  35. package/dist/adapter/helpers/get-shader-layout.js +261 -225
  36. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  37. package/dist/adapter/helpers/parse-shader-compiler-log.js +47 -37
  38. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  39. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  40. package/dist/adapter/helpers/set-uniform.js +68 -82
  41. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  42. package/dist/adapter/helpers/webgl-topology-utils.js +78 -93
  43. package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
  44. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  45. package/dist/adapter/objects/constants-to-keys.js +19 -12
  46. package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
  47. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  48. package/dist/adapter/objects/webgl-renderbuffer.js +86 -77
  49. package/dist/adapter/objects/webgl-resource.d.ts +3 -25
  50. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  51. package/dist/adapter/objects/webgl-resource.js +102 -146
  52. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  53. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  54. package/dist/adapter/resources/webgl-buffer.js +161 -119
  55. package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
  56. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgl-command-buffer.js +266 -168
  58. package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
  59. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-command-encoder.js +33 -39
  61. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  62. package/dist/adapter/resources/webgl-framebuffer.d.ts +8 -10
  63. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgl-framebuffer.js +167 -137
  65. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  66. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  67. package/dist/adapter/resources/webgl-query-set.js +136 -0
  68. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
  69. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-render-pass.js +124 -90
  71. package/dist/adapter/resources/webgl-render-pipeline.d.ts +15 -6
  72. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-render-pipeline.js +356 -221
  74. package/dist/adapter/resources/webgl-sampler.d.ts +1 -3
  75. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  76. package/dist/adapter/resources/webgl-sampler.js +43 -33
  77. package/dist/adapter/resources/webgl-shader.d.ts +12 -2
  78. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-shader.js +114 -47
  80. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  81. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  82. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  83. package/dist/adapter/resources/webgl-texture.d.ts +6 -9
  84. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  85. package/dist/adapter/resources/webgl-texture.js +615 -695
  86. package/dist/adapter/resources/webgl-transform-feedback.d.ts +2 -2
  87. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-transform-feedback.js +141 -143
  89. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
  90. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-vertex-array.js +229 -157
  92. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  93. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  94. package/dist/adapter/webgl-canvas-context.js +58 -36
  95. package/dist/adapter/webgl-device.d.ts +34 -40
  96. package/dist/adapter/webgl-device.d.ts.map +1 -1
  97. package/dist/adapter/webgl-device.js +418 -363
  98. package/dist/classic/accessor.d.ts.map +1 -1
  99. package/dist/classic/accessor.js +132 -101
  100. package/dist/classic/clear.d.ts +2 -2
  101. package/dist/classic/clear.d.ts.map +1 -1
  102. package/dist/classic/clear.js +73 -72
  103. package/dist/classic/copy-and-blit.d.ts +1 -1
  104. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  105. package/dist/classic/copy-and-blit.js +175 -175
  106. package/dist/classic/format-utils.d.ts +2 -2
  107. package/dist/classic/format-utils.d.ts.map +1 -1
  108. package/dist/classic/format-utils.js +39 -32
  109. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  110. package/dist/classic/typed-array-utils.js +96 -81
  111. package/dist/context/context/context-data.d.ts +14 -0
  112. package/dist/context/context/context-data.d.ts.map +1 -0
  113. package/dist/context/context/context-data.js +33 -0
  114. package/dist/context/context/create-browser-context.d.ts +1 -6
  115. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  116. package/dist/context/context/create-browser-context.js +62 -49
  117. package/dist/context/debug/spector.d.ts.map +1 -1
  118. package/dist/context/debug/spector.js +55 -50
  119. package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
  120. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  121. package/dist/context/debug/webgl-developer-tools.js +104 -77
  122. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  123. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  124. package/dist/context/helpers/create-browser-context.js +67 -0
  125. package/dist/context/{polyfill/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -2
  126. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  127. package/dist/context/helpers/webgl-context-data.js +21 -0
  128. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  129. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  130. package/dist/context/helpers/webgl-extensions.js +10 -0
  131. package/dist/context/parameters/unified-parameter-api.d.ts +3 -3
  132. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  133. package/dist/context/parameters/unified-parameter-api.js +94 -44
  134. package/dist/context/parameters/webgl-parameter-tables.d.ts +120 -99
  135. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  136. package/dist/context/parameters/webgl-parameter-tables.js +469 -404
  137. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  138. package/dist/context/state-tracker/deep-array-equal.js +19 -14
  139. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  140. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  141. package/dist/context/state-tracker/track-context-state.js +188 -123
  142. package/dist/context/state-tracker/with-parameters.d.ts +2 -2
  143. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  144. package/dist/context/state-tracker/with-parameters.js +43 -26
  145. package/dist/dist.dev.js +3135 -4142
  146. package/dist/index.cjs +1766 -2717
  147. package/dist/index.cjs.map +7 -0
  148. package/dist/index.d.ts +25 -28
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +16 -5
  151. package/dist/types.d.ts.map +1 -1
  152. package/dist/types.js +3 -1
  153. package/dist.min.js +9 -42
  154. package/package.json +11 -15
  155. package/src/adapter/converters/device-parameters.ts +105 -17
  156. package/src/adapter/converters/sampler-parameters.ts +12 -20
  157. package/src/adapter/converters/shader-formats.ts +47 -22
  158. package/src/adapter/converters/texture-formats.ts +138 -185
  159. package/src/adapter/converters/vertex-formats.ts +3 -3
  160. package/src/adapter/device-helpers/webgl-device-features.ts +101 -0
  161. package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +30 -22
  162. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  163. package/src/adapter/helpers/decode-webgl-types.ts +13 -7
  164. package/src/adapter/helpers/get-shader-layout.ts +21 -31
  165. package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
  166. package/src/adapter/helpers/set-uniform.ts +3 -4
  167. package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
  168. package/src/adapter/objects/constants-to-keys.ts +3 -2
  169. package/src/adapter/objects/webgl-renderbuffer.ts +38 -16
  170. package/src/adapter/objects/webgl-resource.ts +7 -140
  171. package/src/adapter/resources/webgl-buffer.ts +10 -14
  172. package/src/adapter/resources/webgl-command-buffer.ts +24 -34
  173. package/src/adapter/resources/webgl-command-encoder.ts +14 -11
  174. package/src/adapter/resources/webgl-external-texture.ts +5 -5
  175. package/src/adapter/resources/webgl-framebuffer.ts +38 -34
  176. package/src/adapter/resources/webgl-query-set.ts +171 -0
  177. package/src/adapter/resources/webgl-render-pass.ts +24 -15
  178. package/src/adapter/resources/webgl-render-pipeline.ts +138 -70
  179. package/src/adapter/resources/webgl-sampler.ts +7 -10
  180. package/src/adapter/resources/webgl-shader.ts +65 -11
  181. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  182. package/src/adapter/resources/webgl-texture.ts +38 -105
  183. package/src/adapter/resources/webgl-transform-feedback.ts +16 -22
  184. package/src/adapter/resources/webgl-vertex-array.ts +20 -21
  185. package/src/adapter/webgl-canvas-context.ts +7 -11
  186. package/src/adapter/webgl-device.ts +106 -151
  187. package/src/classic/accessor.ts +5 -4
  188. package/src/classic/clear.ts +25 -20
  189. package/src/classic/copy-and-blit.ts +12 -6
  190. package/src/classic/format-utils.ts +2 -1
  191. package/src/classic/typed-array-utils.ts +3 -7
  192. package/src/context/debug/spector.ts +9 -6
  193. package/src/context/debug/webgl-developer-tools.ts +31 -20
  194. package/src/context/{context → helpers}/create-browser-context.ts +9 -33
  195. package/src/context/{polyfill/context-data.ts → helpers/webgl-context-data.ts} +3 -2
  196. package/src/context/helpers/webgl-extensions.ts +17 -0
  197. package/src/context/parameters/unified-parameter-api.ts +5 -4
  198. package/src/context/parameters/webgl-parameter-tables.ts +118 -90
  199. package/src/context/state-tracker/deep-array-equal.ts +2 -1
  200. package/src/context/state-tracker/track-context-state.ts +29 -23
  201. package/src/context/state-tracker/with-parameters.ts +7 -2
  202. package/src/index.ts +4 -18
  203. package/src/types.ts +2 -1
  204. package/dist/adapter/converters/device-parameters.js.map +0 -1
  205. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  206. package/dist/adapter/converters/shader-formats.js.map +0 -1
  207. package/dist/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  209. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  210. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  211. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  212. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  213. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  214. package/dist/adapter/device-helpers/is-old-ie.js +0 -9
  215. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  216. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  217. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  218. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  219. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  220. package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
  221. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  222. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  223. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  224. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  225. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  226. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  227. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  228. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  229. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  230. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  231. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  232. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  233. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  234. package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
  235. package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
  236. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  237. package/dist/adapter/webgl-device.js.map +0 -1
  238. package/dist/classic/accessor.js.map +0 -1
  239. package/dist/classic/clear.js.map +0 -1
  240. package/dist/classic/copy-and-blit.js.map +0 -1
  241. package/dist/classic/format-utils.js.map +0 -1
  242. package/dist/classic/typed-array-utils.js.map +0 -1
  243. package/dist/context/context/create-browser-context.js.map +0 -1
  244. package/dist/context/context/create-headless-context.d.ts +0 -9
  245. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  246. package/dist/context/context/create-headless-context.js +0 -42
  247. package/dist/context/context/create-headless-context.js.map +0 -1
  248. package/dist/context/context/webgl-checks.d.ts +0 -13
  249. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  250. package/dist/context/context/webgl-checks.js +0 -31
  251. package/dist/context/context/webgl-checks.js.map +0 -1
  252. package/dist/context/debug/spector.js.map +0 -1
  253. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  254. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  255. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  256. package/dist/context/polyfill/context-data.d.ts.map +0 -1
  257. package/dist/context/polyfill/context-data.js +0 -12
  258. package/dist/context/polyfill/context-data.js.map +0 -1
  259. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  260. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  261. package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
  262. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  263. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  264. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  265. package/dist/context/polyfill/polyfill-context.js +0 -87
  266. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  267. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  268. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  269. package/dist/context/polyfill/polyfill-table.js +0 -137
  270. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  271. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  272. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  273. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
  274. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  275. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  276. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  277. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  278. package/dist/index.js.map +0 -1
  279. package/dist/types.js.map +0 -1
  280. package/src/adapter/device-helpers/device-features.ts +0 -161
  281. package/src/adapter/device-helpers/device-limits.ts +0 -155
  282. package/src/adapter/device-helpers/is-old-ie.ts +0 -14
  283. package/src/context/context/create-headless-context.ts +0 -51
  284. package/src/context/context/webgl-checks.ts +0 -51
  285. package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
  286. package/src/context/polyfill/polyfill-context.ts +0 -104
  287. package/src/context/polyfill/polyfill-table.ts +0 -167
  288. 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.4",
4
- "description": "WebGL2 adapter for the luma.gl API",
3
+ "version": "9.0.0-beta.6",
4
+ "description": "WebGL2 adapter for the luma.gl core API",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "publishConfig": {
@@ -34,22 +34,18 @@
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 ./src/index.ts -output=dist/dist.min.js",
39
+ "build-dev-bundle": "ocular-bundle ./src/index.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/constants": "^9.0.0-beta.4"
44
44
  },
45
45
  "dependencies": {
46
- "@babel/runtime": "^7.0.0",
47
- "@luma.gl/constants": "9.0.0-beta.4",
48
- "@luma.gl/core": "9.0.0-beta.4",
46
+ "@luma.gl/constants": "9.0.0-beta.6",
47
+ "@luma.gl/core": "9.0.0-beta.6",
49
48
  "@probe.gl/env": "^4.0.2"
50
49
  },
51
- "devDependencies": {
52
- "@luma.gl/test-utils": "9.0.0-beta.4"
53
- },
54
- "gitHead": "bf6bb45b25d59de5b3d05dab4b2e91ad583059e6"
50
+ "gitHead": "cb2f0938d03a65e3588622ac99650b14a10488b6"
55
51
  }
@@ -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
@@ -143,6 +144,13 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
143
144
  );
144
145
  }
145
146
 
147
+ if (parameters.unclippedDepth) {
148
+ if (device.features.has('depth-clip-control')) {
149
+ // EXT_depth_clamp
150
+ gl.enable(GL.DEPTH_CLAMP_EXT);
151
+ }
152
+ }
153
+
146
154
  if (parameters.depthBias !== undefined) {
147
155
  gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);
148
156
  }
@@ -151,6 +159,66 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
151
159
  // // Handled by depthBias
152
160
  // },
153
161
 
162
+ // WEBGL EXTENSIONS
163
+
164
+ if (device.features.has('provoking-vertex-webgl')) {
165
+ const extensions = webglDevice.getExtension('WEBGL_provoking_vertex');
166
+ const ext = extensions.WEBGL_provoking_vertex;
167
+
168
+ if (parameters.provokingVertex) {
169
+ const vertex = map('provokingVertex', parameters.provokingVertex, {
170
+ first: GL.FIRST_VERTEX_CONVENTION_WEBGL,
171
+ last: GL.LAST_VERTEX_CONVENTION_WEBGL
172
+ });
173
+ ext?.provokingVertexWEBGL(vertex);
174
+ }
175
+ }
176
+
177
+ if (device.features.has('polygon-mode-webgl')) {
178
+ const extensions = webglDevice.getExtension('WEBGL_polygon_mode');
179
+ const ext = extensions.WEBGL_polygon_mode;
180
+
181
+ if (parameters.polygonMode) {
182
+ const mode = map('polygonMode', parameters.provokingVertex, {
183
+ fill: GL.FILL_WEBGL,
184
+ lint: GL.LINE_WEBGL
185
+ });
186
+ ext?.polygonModeWEBGL(GL.FRONT, mode);
187
+ ext?.polygonModeWEBGL(GL.BACK, mode);
188
+ }
189
+
190
+ if (parameters.polygonOffsetLine) {
191
+ gl.enable(GL.POLYGON_OFFSET_LINE_WEBGL);
192
+ }
193
+ }
194
+
195
+ if (device.features.has('shader-clip-cull-distance-webgl')) {
196
+ if (parameters.clipDistance0) {
197
+ gl.enable(GL.CLIP_DISTANCE0_WEBGL);
198
+ }
199
+ if (parameters.clipDistance1) {
200
+ gl.enable(GL.CLIP_DISTANCE1_WEBGL);
201
+ }
202
+ if (parameters.clipDistance2) {
203
+ gl.enable(GL.CLIP_DISTANCE2_WEBGL);
204
+ }
205
+ if (parameters.clipDistance3) {
206
+ gl.enable(GL.CLIP_DISTANCE3_WEBGL);
207
+ }
208
+ if (parameters.clipDistance4) {
209
+ gl.enable(GL.CLIP_DISTANCE4_WEBGL);
210
+ }
211
+ if (parameters.clipDistance5) {
212
+ gl.enable(GL.CLIP_DISTANCE5_WEBGL);
213
+ }
214
+ if (parameters.clipDistance6) {
215
+ gl.enable(GL.CLIP_DISTANCE6_WEBGL);
216
+ }
217
+ if (parameters.clipDistance7) {
218
+ gl.enable(GL.CLIP_DISTANCE7_WEBGL);
219
+ }
220
+ }
221
+
154
222
  // DEPTH STENCIL
155
223
 
156
224
  if (parameters.depthWriteEnabled !== undefined) {
@@ -212,14 +280,32 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
212
280
  if (parameters.blendColorOperation || parameters.blendAlphaOperation) {
213
281
  gl.enable(GL.BLEND);
214
282
 
215
- const colorEquation = convertBlendOperationToEquation('blendColorOperation', parameters.blendColorOperation || 'add');
216
- const alphaEquation = convertBlendOperationToEquation('blendAlphaOperation', parameters.blendAlphaOperation || 'add');
283
+ const colorEquation = convertBlendOperationToEquation(
284
+ 'blendColorOperation',
285
+ parameters.blendColorOperation || 'add'
286
+ );
287
+ const alphaEquation = convertBlendOperationToEquation(
288
+ 'blendAlphaOperation',
289
+ parameters.blendAlphaOperation || 'add'
290
+ );
217
291
  gl.blendEquationSeparate(colorEquation, alphaEquation);
218
292
 
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');
293
+ const colorSrcFactor = convertBlendFactorToFunction(
294
+ 'blendColorSrcFactor',
295
+ parameters.blendColorSrcFactor || 'one'
296
+ );
297
+ const colorDstFactor = convertBlendFactorToFunction(
298
+ 'blendColorDstFactor',
299
+ parameters.blendColorDstFactor || 'zero'
300
+ );
301
+ const alphaSrcFactor = convertBlendFactorToFunction(
302
+ 'blendAlphaSrcFactor',
303
+ parameters.blendAlphaSrcFactor || 'one'
304
+ );
305
+ const alphaDstFactor = convertBlendFactorToFunction(
306
+ 'blendAlphaDstFactor',
307
+ parameters.blendAlphaDstFactor || 'zero'
308
+ );
223
309
  gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);
224
310
  }
225
311
  }
@@ -286,21 +372,23 @@ function convertStencilOperation(parameter: string, value: StencilOperation): GL
286
372
  });
287
373
  }
288
374
 
289
- function convertBlendOperationToEquation(parameter: string, value: BlendOperation): GLBlendEquation {
375
+ function convertBlendOperationToEquation(
376
+ parameter: string,
377
+ value: BlendOperation
378
+ ): GLBlendEquation {
290
379
  return map(parameter, value, {
291
- 'add': GL.FUNC_ADD,
292
- 'subtract': GL.FUNC_SUBTRACT,
380
+ add: GL.FUNC_ADD,
381
+ subtract: GL.FUNC_SUBTRACT,
293
382
  '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
383
+ min: GL.MIN,
384
+ max: GL.MAX
297
385
  } as Record<BlendOperation, GLBlendEquation>);
298
386
  }
299
387
 
300
388
  function convertBlendFactorToFunction(parameter: string, value: BlendFactor): GLBlendFunction {
301
389
  return map(parameter, value, {
302
- 'one': GL.ONE,
303
- 'zero': GL.ZERO,
390
+ one: GL.ONE,
391
+ zero: GL.ZERO,
304
392
  'src-color': GL.SRC_COLOR,
305
393
  'one-minus-src-color': GL.ONE_MINUS_SRC_COLOR,
306
394
  'dst-color': GL.DST_COLOR,
@@ -308,7 +396,7 @@ function convertBlendFactorToFunction(parameter: string, value: BlendFactor): GL
308
396
  'src-alpha': GL.SRC_ALPHA,
309
397
  'one-minus-src-alpha': GL.ONE_MINUS_SRC_ALPHA,
310
398
  'dst-alpha': GL.DST_ALPHA,
311
- 'one-minus-dst-alpha': GL.ONE_MINUS_DST_ALPHA,
399
+ 'one-minus-dst-alpha': GL.ONE_MINUS_DST_ALPHA
312
400
  } as Record<BlendFactor, GLBlendFunction>);
313
401
  }
314
402
 
@@ -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
  }