@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
@@ -1 +1 @@
1
- {"version":3,"file":"device-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/device-parameters.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,MAAM,EACN,UAAU,EACV,eAAe,EAMhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,KAAK,EAAmC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAOvF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,GAAG,OAAO,EACnD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAiBH;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAC1C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAC9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED,kCAAkC;AAClC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,QA6GzE;AAyBD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,EAAE,CAWpF;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,eAAe,CAWtF"}
1
+ {"version":3,"file":"device-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/device-parameters.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,UAAU,EACV,eAAe,EAMhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,KAAK,EAAmC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAOvF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,GAAG,OAAO,EACnD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAC1C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAeH;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAC9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED,kCAAkC;AAClC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,QAkMzE;AAyBD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,EAAE,CAWpF;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,eAAe,CAWtF"}
@@ -1,183 +1,322 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { log, isObjectEmpty } from '@luma.gl/core';
5
+ import { GL } from '@luma.gl/constants';
2
6
  import { pushContextState, popContextState } from "../../context/state-tracker/track-context-state.js";
3
7
  import { setGLParameters } from "../../context/parameters/unified-parameter-api.js";
4
- import { WebGLDevice } from "../webgl-device.js";
8
+ /* eslint-disable no-unused-expressions */ // For expression ? gl.enable() : gl.disable()
9
+ /**
10
+ * Execute a function with a set of temporary WebGL parameter overrides
11
+ * - Saves current "global" WebGL context settings
12
+ * - Sets the supplies WebGL context parameters,
13
+ * - Executes supplied function
14
+ * - Restores parameters
15
+ * - Returns the return value of the supplied function
16
+ */
5
17
  export function withDeviceAndGLParameters(device, parameters, glParameters, func) {
6
- if (isObjectEmpty(parameters)) {
7
- return func(device);
8
- }
9
- pushContextState(device.gl);
10
- try {
11
- setDeviceParameters(device, parameters);
12
- setGLParameters(device, glParameters);
13
- return func(device);
14
- } finally {
15
- popContextState(device.gl);
16
- }
18
+ if (isObjectEmpty(parameters)) {
19
+ // Avoid setting state if no parameters provided. Just call and return
20
+ return func(device);
21
+ }
22
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions
23
+ const webglDevice = device;
24
+ pushContextState(webglDevice.gl);
25
+ try {
26
+ setDeviceParameters(device, parameters);
27
+ setGLParameters(webglDevice.gl, glParameters);
28
+ return func(device);
29
+ }
30
+ finally {
31
+ popContextState(webglDevice.gl);
32
+ }
17
33
  }
34
+ /**
35
+ * Execute a function with a set of temporary WebGL parameter overrides
36
+ * - Saves current "global" WebGL context settings
37
+ * - Sets the supplies WebGL context parameters,
38
+ * - Executes supplied function
39
+ * - Restores parameters
40
+ * - Returns the return value of the supplied function
41
+ * @deprecated use withDeviceParameters instead
42
+ */
18
43
  export function withGLParameters(device, parameters, func) {
19
- if (isObjectEmpty(parameters)) {
20
- return func(device);
21
- }
22
- pushContextState(device.gl);
23
- try {
24
- setGLParameters(device, parameters);
25
- return func(device);
26
- } finally {
27
- popContextState(device.gl);
28
- }
44
+ if (isObjectEmpty(parameters)) {
45
+ // Avoid setting state if no parameters provided. Just call and return
46
+ return func(device);
47
+ }
48
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions
49
+ const webglDevice = device;
50
+ pushContextState(webglDevice.gl);
51
+ try {
52
+ setGLParameters(webglDevice.gl, parameters);
53
+ return func(device);
54
+ }
55
+ finally {
56
+ popContextState(webglDevice.gl);
57
+ }
29
58
  }
59
+ /**
60
+ * Execute a function with a set of temporary WebGL parameter overrides
61
+ * - Saves current "global" WebGL context settings
62
+ * - Sets the supplies WebGL context parameters,
63
+ * - Executes supplied function
64
+ * - Restores parameters
65
+ * - Returns the return value of the supplied function
66
+ */
30
67
  export function withDeviceParameters(device, parameters, func) {
31
- if (isObjectEmpty(parameters)) {
32
- return func(device);
33
- }
34
- pushContextState(device.gl);
35
- try {
36
- setDeviceParameters(device, parameters);
37
- return func(device);
38
- } finally {
39
- popContextState(device.gl);
40
- }
68
+ if (isObjectEmpty(parameters)) {
69
+ // Avoid setting state if no parameters provided. Just call and return
70
+ return func(device);
71
+ }
72
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions
73
+ // @ts-expect-error
74
+ pushContextState(device.gl);
75
+ try {
76
+ setDeviceParameters(device, parameters);
77
+ return func(device);
78
+ }
79
+ finally {
80
+ // @ts-expect-error
81
+ popContextState(device.gl);
82
+ }
41
83
  }
84
+ /** Set WebGPU Style Parameters */
42
85
  export function setDeviceParameters(device, parameters) {
43
- const webglDevice = WebGLDevice.attach(device);
44
- const {
45
- gl
46
- } = webglDevice;
47
- if (parameters.cullMode) {
48
- switch (parameters.cullMode) {
49
- case 'none':
50
- gl.disable(2884);
51
- break;
52
- case 'front':
53
- gl.enable(2884);
54
- gl.cullFace(1028);
55
- break;
56
- case 'back':
57
- gl.enable(2884);
58
- gl.cullFace(1029);
59
- break;
60
- }
61
- }
62
- if (parameters.frontFace) {
63
- gl.frontFace(map('frontFace', parameters.frontFace, {
64
- ccw: 2305,
65
- cw: 2304
66
- }));
67
- }
68
- if (parameters.depthBias !== undefined) {
69
- gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);
70
- }
71
- if (parameters.depthWriteEnabled !== undefined) {
72
- gl.depthMask(mapBoolean('depthWriteEnabled', parameters.depthWriteEnabled));
73
- }
74
- if (parameters.depthCompare) {
75
- parameters.depthCompare !== 'always' ? gl.enable(2929) : gl.disable(2929);
76
- gl.depthFunc(convertCompareFunction('depthCompare', parameters.depthCompare));
77
- }
78
- if (parameters.stencilWriteMask) {
79
- const mask = parameters.stencilWriteMask;
80
- gl.stencilMaskSeparate(1028, mask);
81
- gl.stencilMaskSeparate(1029, mask);
82
- }
83
- if (parameters.stencilReadMask) {
84
- log.warn('stencilReadMask not supported under WebGL');
85
- }
86
- if (parameters.stencilCompare) {
87
- const mask = parameters.stencilReadMask || 0xffffffff;
88
- const glValue = convertCompareFunction('depthCompare', parameters.stencilCompare);
89
- parameters.stencilCompare !== 'always' ? gl.enable(2960) : gl.disable(2960);
90
- gl.stencilFuncSeparate(1028, glValue, 0, mask);
91
- gl.stencilFuncSeparate(1029, glValue, 0, mask);
92
- }
93
- if (parameters.stencilPassOperation && parameters.stencilFailOperation && parameters.stencilDepthFailOperation) {
94
- const dppass = convertStencilOperation('stencilPassOperation', parameters.stencilPassOperation);
95
- const sfail = convertStencilOperation('stencilFailOperation', parameters.stencilFailOperation);
96
- const dpfail = convertStencilOperation('stencilDepthFailOperation', parameters.stencilDepthFailOperation);
97
- gl.stencilOpSeparate(1028, sfail, dpfail, dppass);
98
- gl.stencilOpSeparate(1029, sfail, dpfail, dppass);
99
- }
100
- if (parameters.blendColorOperation || parameters.blendAlphaOperation) {
101
- gl.enable(3042);
102
- const colorEquation = convertBlendOperationToEquation('blendColorOperation', parameters.blendColorOperation || 'add');
103
- const alphaEquation = convertBlendOperationToEquation('blendAlphaOperation', parameters.blendAlphaOperation || 'add');
104
- gl.blendEquationSeparate(colorEquation, alphaEquation);
105
- const colorSrcFactor = convertBlendFactorToFunction('blendColorSrcFactor', parameters.blendColorSrcFactor || 'one');
106
- const colorDstFactor = convertBlendFactorToFunction('blendColorDstFactor', parameters.blendColorDstFactor || 'zero');
107
- const alphaSrcFactor = convertBlendFactorToFunction('blendAlphaSrcFactor', parameters.blendAlphaSrcFactor || 'one');
108
- const alphaDstFactor = convertBlendFactorToFunction('blendAlphaDstFactor', parameters.blendAlphaDstFactor || 'zero');
109
- gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);
110
- }
86
+ const webglDevice = device;
87
+ const { gl } = webglDevice;
88
+ // RASTERIZATION SETTINGS
89
+ if (parameters.cullMode) {
90
+ switch (parameters.cullMode) {
91
+ case 'none':
92
+ gl.disable(2884);
93
+ break;
94
+ case 'front':
95
+ gl.enable(2884);
96
+ gl.cullFace(1028);
97
+ break;
98
+ case 'back':
99
+ gl.enable(2884);
100
+ gl.cullFace(1029);
101
+ break;
102
+ }
103
+ }
104
+ if (parameters.frontFace) {
105
+ gl.frontFace(map('frontFace', parameters.frontFace, {
106
+ ccw: 2305,
107
+ cw: 2304
108
+ }));
109
+ }
110
+ if (parameters.unclippedDepth) {
111
+ if (device.features.has('depth-clip-control')) {
112
+ // EXT_depth_clamp
113
+ gl.enable(34383);
114
+ }
115
+ }
116
+ if (parameters.depthBias !== undefined) {
117
+ gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);
118
+ }
119
+ // depthBiasSlopeScale: {
120
+ // // Handled by depthBias
121
+ // },
122
+ // WEBGL EXTENSIONS
123
+ if (device.features.has('provoking-vertex-webgl')) {
124
+ const extensions = webglDevice.getExtension('WEBGL_provoking_vertex');
125
+ const ext = extensions.WEBGL_provoking_vertex;
126
+ if (parameters.provokingVertex) {
127
+ const vertex = map('provokingVertex', parameters.provokingVertex, {
128
+ first: 36429,
129
+ last: 36430
130
+ });
131
+ ext?.provokingVertexWEBGL(vertex);
132
+ }
133
+ }
134
+ if (device.features.has('polygon-mode-webgl')) {
135
+ const extensions = webglDevice.getExtension('WEBGL_polygon_mode');
136
+ const ext = extensions.WEBGL_polygon_mode;
137
+ if (parameters.polygonMode) {
138
+ const mode = map('polygonMode', parameters.provokingVertex, {
139
+ fill: 6914,
140
+ lint: 6913
141
+ });
142
+ ext?.polygonModeWEBGL(1028, mode);
143
+ ext?.polygonModeWEBGL(1029, mode);
144
+ }
145
+ if (parameters.polygonOffsetLine) {
146
+ gl.enable(10754);
147
+ }
148
+ }
149
+ if (device.features.has('shader-clip-cull-distance-webgl')) {
150
+ if (parameters.clipDistance0) {
151
+ gl.enable(12288);
152
+ }
153
+ if (parameters.clipDistance1) {
154
+ gl.enable(12289);
155
+ }
156
+ if (parameters.clipDistance2) {
157
+ gl.enable(12290);
158
+ }
159
+ if (parameters.clipDistance3) {
160
+ gl.enable(12291);
161
+ }
162
+ if (parameters.clipDistance4) {
163
+ gl.enable(12292);
164
+ }
165
+ if (parameters.clipDistance5) {
166
+ gl.enable(12293);
167
+ }
168
+ if (parameters.clipDistance6) {
169
+ gl.enable(12294);
170
+ }
171
+ if (parameters.clipDistance7) {
172
+ gl.enable(12295);
173
+ }
174
+ }
175
+ // DEPTH STENCIL
176
+ if (parameters.depthWriteEnabled !== undefined) {
177
+ gl.depthMask(mapBoolean('depthWriteEnabled', parameters.depthWriteEnabled));
178
+ }
179
+ if (parameters.depthCompare) {
180
+ parameters.depthCompare !== 'always' ? gl.enable(2929) : gl.disable(2929);
181
+ gl.depthFunc(convertCompareFunction('depthCompare', parameters.depthCompare));
182
+ }
183
+ if (parameters.stencilWriteMask) {
184
+ const mask = parameters.stencilWriteMask;
185
+ gl.stencilMaskSeparate(1028, mask);
186
+ gl.stencilMaskSeparate(1029, mask);
187
+ }
188
+ if (parameters.stencilReadMask) {
189
+ // stencilReadMask is handle inside stencil***Compare.
190
+ log.warn('stencilReadMask not supported under WebGL');
191
+ }
192
+ if (parameters.stencilCompare) {
193
+ const mask = parameters.stencilReadMask || 0xffffffff;
194
+ const glValue = convertCompareFunction('depthCompare', parameters.stencilCompare);
195
+ // TODO - ensure back doesn't overwrite
196
+ parameters.stencilCompare !== 'always'
197
+ ? gl.enable(2960)
198
+ : gl.disable(2960);
199
+ gl.stencilFuncSeparate(1028, glValue, 0, mask);
200
+ gl.stencilFuncSeparate(1029, glValue, 0, mask);
201
+ }
202
+ if (parameters.stencilPassOperation &&
203
+ parameters.stencilFailOperation &&
204
+ parameters.stencilDepthFailOperation) {
205
+ const dppass = convertStencilOperation('stencilPassOperation', parameters.stencilPassOperation);
206
+ const sfail = convertStencilOperation('stencilFailOperation', parameters.stencilFailOperation);
207
+ const dpfail = convertStencilOperation('stencilDepthFailOperation', parameters.stencilDepthFailOperation);
208
+ gl.stencilOpSeparate(1028, sfail, dpfail, dppass);
209
+ gl.stencilOpSeparate(1029, sfail, dpfail, dppass);
210
+ }
211
+ // stencilDepthFailOperation() {
212
+ // // handled by stencilPassOperation
213
+ // },
214
+ // stencilFailOperation() {
215
+ // // handled by stencilPassOperation
216
+ // },
217
+ // COLOR STATE
218
+ if (parameters.blendColorOperation || parameters.blendAlphaOperation) {
219
+ gl.enable(3042);
220
+ const colorEquation = convertBlendOperationToEquation('blendColorOperation', parameters.blendColorOperation || 'add');
221
+ const alphaEquation = convertBlendOperationToEquation('blendAlphaOperation', parameters.blendAlphaOperation || 'add');
222
+ gl.blendEquationSeparate(colorEquation, alphaEquation);
223
+ const colorSrcFactor = convertBlendFactorToFunction('blendColorSrcFactor', parameters.blendColorSrcFactor || 'one');
224
+ const colorDstFactor = convertBlendFactorToFunction('blendColorDstFactor', parameters.blendColorDstFactor || 'zero');
225
+ const alphaSrcFactor = convertBlendFactorToFunction('blendAlphaSrcFactor', parameters.blendAlphaSrcFactor || 'one');
226
+ const alphaDstFactor = convertBlendFactorToFunction('blendAlphaDstFactor', parameters.blendAlphaDstFactor || 'zero');
227
+ gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);
228
+ }
111
229
  }
230
+ /*
231
+ rasterizationState: {
232
+ cullMode: "back",
233
+ },
234
+
235
+ depthStencilState: {
236
+ depthWriteEnabled: true,
237
+ depthCompare: "less",
238
+ format: "depth24plus-stencil8",
239
+ },
240
+
241
+ colorStates: [
242
+ {
243
+ format: "bgra8unorm",
244
+ // colorBlend.srcFactor = wgpu::BlendFactor::SrcAlpha;
245
+ // colorBlend.dstFactor = wgpu::BlendFactor::OneMinusSrcAlpha;
246
+ // alphaBlend.srcFactor = wgpu::BlendFactor::SrcAlpha;
247
+ // alphaBlend.dstFactor = wgpu::BlendFactor::OneMinusSrcAlpha;
248
+ },
249
+ ],
250
+ });
251
+ */
112
252
  export function convertCompareFunction(parameter, value) {
113
- return map(parameter, value, {
114
- never: 512,
115
- less: 513,
116
- equal: 514,
117
- 'less-equal': 515,
118
- greater: 516,
119
- 'not-equal': 517,
120
- 'greater-equal': 518,
121
- always: 519
122
- });
253
+ return map(parameter, value, {
254
+ never: 512,
255
+ less: 513,
256
+ equal: 514,
257
+ 'less-equal': 515,
258
+ greater: 516,
259
+ 'not-equal': 517,
260
+ 'greater-equal': 518,
261
+ always: 519
262
+ });
123
263
  }
124
264
  export function convertToCompareFunction(parameter, value) {
125
- return map(parameter, value, {
126
- [512]: 'never',
127
- [513]: 'less',
128
- [514]: 'equal',
129
- [515]: 'less-equal',
130
- [516]: 'greater',
131
- [517]: 'not-equal',
132
- [518]: 'greater-equal',
133
- [519]: 'always'
134
- });
265
+ return map(parameter, value, {
266
+ [512]: 'never',
267
+ [513]: 'less',
268
+ [514]: 'equal',
269
+ [515]: 'less-equal',
270
+ [516]: 'greater',
271
+ [517]: 'not-equal',
272
+ [518]: 'greater-equal',
273
+ [519]: 'always'
274
+ });
135
275
  }
136
276
  function convertStencilOperation(parameter, value) {
137
- return map(parameter, value, {
138
- keep: 7680,
139
- zero: 0,
140
- replace: 7681,
141
- invert: 5386,
142
- 'increment-clamp': 7682,
143
- 'decrement-clamp': 7683,
144
- 'increment-wrap': 34055,
145
- 'decrement-wrap': 34056
146
- });
277
+ return map(parameter, value, {
278
+ keep: 7680,
279
+ zero: 0,
280
+ replace: 7681,
281
+ invert: 5386,
282
+ 'increment-clamp': 7682,
283
+ 'decrement-clamp': 7683,
284
+ 'increment-wrap': 34055,
285
+ 'decrement-wrap': 34056
286
+ });
147
287
  }
148
288
  function convertBlendOperationToEquation(parameter, value) {
149
- return map(parameter, value, {
150
- 'add': 32774,
151
- 'subtract': 32778,
152
- 'reverse-subtract': 32779,
153
- 'min': 32775,
154
- 'max': 32776
155
- });
289
+ return map(parameter, value, {
290
+ add: 32774,
291
+ subtract: 32778,
292
+ 'reverse-subtract': 32779,
293
+ min: 32775,
294
+ max: 32776
295
+ });
156
296
  }
157
297
  function convertBlendFactorToFunction(parameter, value) {
158
- return map(parameter, value, {
159
- 'one': 1,
160
- 'zero': 0,
161
- 'src-color': 768,
162
- 'one-minus-src-color': 769,
163
- 'dst-color': 774,
164
- 'one-minus-dst-color': 775,
165
- 'src-alpha': 770,
166
- 'one-minus-src-alpha': 771,
167
- 'dst-alpha': 772,
168
- 'one-minus-dst-alpha': 773
169
- });
298
+ return map(parameter, value, {
299
+ one: 1,
300
+ zero: 0,
301
+ 'src-color': 768,
302
+ 'one-minus-src-color': 769,
303
+ 'dst-color': 774,
304
+ 'one-minus-dst-color': 775,
305
+ 'src-alpha': 770,
306
+ 'one-minus-src-alpha': 771,
307
+ 'dst-alpha': 772,
308
+ 'one-minus-dst-alpha': 773
309
+ });
170
310
  }
171
311
  function message(parameter, value) {
172
- return `Illegal parameter ${value} for ${parameter}`;
312
+ return `Illegal parameter ${value} for ${parameter}`;
173
313
  }
174
314
  function map(parameter, value, valueMap) {
175
- if (!(value in valueMap)) {
176
- throw new Error(message(parameter, value));
177
- }
178
- return valueMap[value];
315
+ if (!(value in valueMap)) {
316
+ throw new Error(message(parameter, value));
317
+ }
318
+ return valueMap[value];
179
319
  }
180
320
  function mapBoolean(parameter, value) {
181
- return value;
321
+ return value;
182
322
  }
183
- //# sourceMappingURL=device-parameters.js.map
@@ -6,8 +6,4 @@ import { GLSamplerParameters } from '@luma.gl/constants';
6
6
  * @returns
7
7
  */
8
8
  export declare function convertSamplerParametersToWebGL(props: SamplerProps): GLSamplerParameters;
9
- /**
10
- * Override sampler settings that are not supported by Non-Power-of-Two textures in WebGL1.
11
- */
12
- export declare function updateSamplerParametersForNPOT(parameters: GLSamplerParameters): GLSamplerParameters;
13
9
  //# sourceMappingURL=sampler-parameters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sampler-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/sampler-parameters.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAK,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAG3D;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,YAAY,GAAG,mBAAmB,CAuCxF;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,mBAAmB,GAC9B,mBAAmB,CAUrB"}
1
+ {"version":3,"file":"sampler-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/sampler-parameters.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAK,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAG3D;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,YAAY,GAAG,mBAAmB,CAuCxF"}
@@ -1,76 +1,82 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { GL } from '@luma.gl/constants';
1
5
  import { convertCompareFunction } from "./device-parameters.js";
6
+ /**
7
+ * Convert WebGPU-style sampler props to WebGL
8
+ * @param props
9
+ * @returns
10
+ */
2
11
  export function convertSamplerParametersToWebGL(props) {
3
- const params = {};
4
- if (props.addressModeU) {
5
- params[10242] = convertAddressMode(props.addressModeU);
6
- }
7
- if (props.addressModeV) {
8
- params[10243] = convertAddressMode(props.addressModeV);
9
- }
10
- if (props.addressModeW) {
11
- params[32882] = convertAddressMode(props.addressModeW);
12
- }
13
- if (props.magFilter) {
14
- params[10240] = convertMaxFilterMode(props.magFilter);
15
- }
16
- if (props.minFilter || props.mipmapFilter) {
17
- params[10241] = convertMinFilterMode(props.minFilter || 'linear', props.mipmapFilter);
18
- }
19
- if (props.lodMinClamp !== undefined) {
20
- params[33082] = props.lodMinClamp;
21
- }
22
- if (props.lodMaxClamp !== undefined) {
23
- params[33083] = props.lodMaxClamp;
24
- }
25
- if (props.type === 'comparison-sampler') {
26
- params[34892] = 34894;
27
- }
28
- if (props.compare) {
29
- params[34893] = convertCompareFunction('compare', props.compare);
30
- }
31
- if (props.maxAnisotropy) {
32
- params[34046] = props.maxAnisotropy;
33
- }
34
- return params;
35
- }
36
- export function updateSamplerParametersForNPOT(parameters) {
37
- const newParameters = {
38
- ...parameters
39
- };
40
- if (parameters[10241] !== 9728) {
41
- newParameters[10241] = 9729;
42
- }
43
- newParameters[10242] = 33071;
44
- newParameters[10243] = 33071;
45
- return newParameters;
12
+ const params = {};
13
+ if (props.addressModeU) {
14
+ params[10242] = convertAddressMode(props.addressModeU);
15
+ }
16
+ if (props.addressModeV) {
17
+ params[10243] = convertAddressMode(props.addressModeV);
18
+ }
19
+ if (props.addressModeW) {
20
+ params[32882] = convertAddressMode(props.addressModeW);
21
+ }
22
+ if (props.magFilter) {
23
+ params[10240] = convertMaxFilterMode(props.magFilter);
24
+ }
25
+ if (props.minFilter || props.mipmapFilter) {
26
+ // TODO - arbitrary choice of linear?
27
+ params[10241] = convertMinFilterMode(props.minFilter || 'linear', props.mipmapFilter);
28
+ }
29
+ if (props.lodMinClamp !== undefined) {
30
+ params[33082] = props.lodMinClamp;
31
+ }
32
+ if (props.lodMaxClamp !== undefined) {
33
+ params[33083] = props.lodMaxClamp;
34
+ }
35
+ if (props.type === 'comparison-sampler') {
36
+ // Setting prop.compare turns this into a comparison sampler
37
+ params[34892] = 34894;
38
+ }
39
+ if (props.compare) {
40
+ params[34893] = convertCompareFunction('compare', props.compare);
41
+ }
42
+ // Note depends on WebGL extension
43
+ if (props.maxAnisotropy) {
44
+ params[34046] = props.maxAnisotropy;
45
+ }
46
+ return params;
46
47
  }
48
+ // HELPERS
49
+ /** Convert address more */
47
50
  function convertAddressMode(addressMode) {
48
- switch (addressMode) {
49
- case 'clamp-to-edge':
50
- return 33071;
51
- case 'repeat':
52
- return 10497;
53
- case 'mirror-repeat':
54
- return 33648;
55
- }
51
+ switch (addressMode) {
52
+ case 'clamp-to-edge':
53
+ return 33071;
54
+ case 'repeat':
55
+ return 10497;
56
+ case 'mirror-repeat':
57
+ return 33648;
58
+ }
56
59
  }
57
60
  function convertMaxFilterMode(maxFilter) {
58
- switch (maxFilter) {
59
- case 'nearest':
60
- return 9728;
61
- case 'linear':
62
- return 9729;
63
- }
61
+ switch (maxFilter) {
62
+ case 'nearest':
63
+ return 9728;
64
+ case 'linear':
65
+ return 9729;
66
+ }
64
67
  }
68
+ /**
69
+ * WebGPU has separate min filter and mipmap filter,
70
+ * WebGL is combined and effectively offers 6 options
71
+ */
65
72
  function convertMinFilterMode(minFilter, mipmapFilter) {
66
- if (!mipmapFilter) {
67
- return convertMaxFilterMode(minFilter);
68
- }
69
- switch (minFilter) {
70
- case 'nearest':
71
- return mipmapFilter === 'nearest' ? 9984 : 9986;
72
- case 'linear':
73
- return mipmapFilter === 'nearest' ? 9985 : 9987;
74
- }
73
+ if (!mipmapFilter) {
74
+ return convertMaxFilterMode(minFilter);
75
+ }
76
+ switch (minFilter) {
77
+ case 'nearest':
78
+ return mipmapFilter === 'nearest' ? 9984 : 9986;
79
+ case 'linear':
80
+ return mipmapFilter === 'nearest' ? 9985 : 9987;
81
+ }
75
82
  }
76
- //# sourceMappingURL=sampler-parameters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shader-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/shader-formats.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,mBAAmB,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAElE,kDAAkD;AAClD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,mBAAmB,CASrG;AAED,6CAA6C;AAC7C,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,EAAE,GAAG,cAAc,CAYhE;AAED,2CAA2C;AAC3C,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,UAAU,CASjH"}
1
+ {"version":3,"file":"shader-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/shader-formats.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,mBAAmB,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAElE,kDAAkD;AAClD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,EAAE,EACR,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACxB,mBAAmB,CAcrB;AAED,6CAA6C;AAC7C,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,EAAE,GAAG,cAAc,CAqBhE;AAED,2CAA2C;AAC3C,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,cAAc,GACnB,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,UAAU,CAcrD"}