@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
@@ -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,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,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,325 @@
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
8
  import { WebGLDevice } from "../webgl-device.js";
9
+ /* eslint-disable no-unused-expressions */ // For expression ? gl.enable() : gl.disable()
10
+ /**
11
+ * Execute a function with a set of temporary WebGL parameter overrides
12
+ * - Saves current "global" WebGL context settings
13
+ * - Sets the supplies WebGL context parameters,
14
+ * - Executes supplied function
15
+ * - Restores parameters
16
+ * - Returns the return value of the supplied function
17
+ */
5
18
  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
- }
19
+ if (isObjectEmpty(parameters)) {
20
+ // Avoid setting state if no parameters provided. Just call and return
21
+ return func(device);
22
+ }
23
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions
24
+ // @ts-expect-error
25
+ pushContextState(device.gl);
26
+ try {
27
+ setDeviceParameters(device, parameters);
28
+ setGLParameters(device, glParameters);
29
+ return func(device);
30
+ }
31
+ finally {
32
+ // @ts-expect-error
33
+ popContextState(device.gl);
34
+ }
17
35
  }
36
+ /**
37
+ * Execute a function with a set of temporary WebGL parameter overrides
38
+ * - Saves current "global" WebGL context settings
39
+ * - Sets the supplies WebGL context parameters,
40
+ * - Executes supplied function
41
+ * - Restores parameters
42
+ * - Returns the return value of the supplied function
43
+ * @deprecated use withDeviceParameters instead
44
+ */
18
45
  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
- }
46
+ if (isObjectEmpty(parameters)) {
47
+ // Avoid setting state if no parameters provided. Just call and return
48
+ return func(device);
49
+ }
50
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions
51
+ // @ts-expect-error
52
+ pushContextState(device.gl);
53
+ try {
54
+ setGLParameters(device, parameters);
55
+ return func(device);
56
+ }
57
+ finally {
58
+ // @ts-expect-error
59
+ popContextState(device.gl);
60
+ }
29
61
  }
62
+ /**
63
+ * Execute a function with a set of temporary WebGL parameter overrides
64
+ * - Saves current "global" WebGL context settings
65
+ * - Sets the supplies WebGL context parameters,
66
+ * - Executes supplied function
67
+ * - Restores parameters
68
+ * - Returns the return value of the supplied function
69
+ */
30
70
  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
- }
71
+ if (isObjectEmpty(parameters)) {
72
+ // Avoid setting state if no parameters provided. Just call and return
73
+ return func(device);
74
+ }
75
+ // Wrap in a try-catch to ensure that parameters are restored on exceptions
76
+ // @ts-expect-error
77
+ pushContextState(device.gl);
78
+ try {
79
+ setDeviceParameters(device, parameters);
80
+ return func(device);
81
+ }
82
+ finally {
83
+ // @ts-expect-error
84
+ popContextState(device.gl);
85
+ }
41
86
  }
87
+ /** Set WebGPU Style Parameters */
42
88
  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
- }
89
+ const webglDevice = WebGLDevice.attach(device);
90
+ const { gl } = webglDevice;
91
+ // RASTERIZATION SETTINGS
92
+ if (parameters.cullMode) {
93
+ switch (parameters.cullMode) {
94
+ case 'none':
95
+ gl.disable(GL.CULL_FACE);
96
+ break;
97
+ case 'front':
98
+ gl.enable(GL.CULL_FACE);
99
+ gl.cullFace(GL.FRONT);
100
+ break;
101
+ case 'back':
102
+ gl.enable(GL.CULL_FACE);
103
+ gl.cullFace(GL.BACK);
104
+ break;
105
+ }
106
+ }
107
+ if (parameters.frontFace) {
108
+ gl.frontFace(map('frontFace', parameters.frontFace, {
109
+ ccw: GL.CCW,
110
+ cw: GL.CW
111
+ }));
112
+ }
113
+ if (parameters.unclippedDepth) {
114
+ if (device.features.has('depth-clip-control')) {
115
+ // EXT_depth_clamp
116
+ gl.enable(GL.DEPTH_CLAMP_EXT);
117
+ }
118
+ }
119
+ if (parameters.depthBias !== undefined) {
120
+ gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);
121
+ }
122
+ // depthBiasSlopeScale: {
123
+ // // Handled by depthBias
124
+ // },
125
+ // WEBGL EXTENSIONS
126
+ if (device.features.has('provoking-vertex-webgl')) {
127
+ const extensions = webglDevice.getExtension('WEBGL_provoking_vertex');
128
+ const ext = extensions.WEBGL_provoking_vertex;
129
+ if (parameters.provokingVertex) {
130
+ const vertex = map('provokingVertex', parameters.provokingVertex, {
131
+ first: GL.FIRST_VERTEX_CONVENTION_WEBGL,
132
+ last: GL.LAST_VERTEX_CONVENTION_WEBGL
133
+ });
134
+ ext?.provokingVertexWEBGL(vertex);
135
+ }
136
+ }
137
+ if (device.features.has('polygon-mode-webgl')) {
138
+ const extensions = webglDevice.getExtension('WEBGL_polygon_mode');
139
+ const ext = extensions.WEBGL_polygon_mode;
140
+ if (parameters.polygonMode) {
141
+ const mode = map('polygonMode', parameters.provokingVertex, {
142
+ fill: GL.FILL_WEBGL,
143
+ lint: GL.LINE_WEBGL
144
+ });
145
+ ext?.polygonModeWEBGL(GL.FRONT, mode);
146
+ ext?.polygonModeWEBGL(GL.BACK, mode);
147
+ }
148
+ if (parameters.polygonOffsetLine) {
149
+ gl.enable(GL.POLYGON_OFFSET_LINE_WEBGL);
150
+ }
151
+ }
152
+ if (device.features.has('shader-clip-cull-distance-webgl')) {
153
+ if (parameters.clipDistance0) {
154
+ gl.enable(GL.CLIP_DISTANCE0_WEBGL);
155
+ }
156
+ if (parameters.clipDistance1) {
157
+ gl.enable(GL.CLIP_DISTANCE1_WEBGL);
158
+ }
159
+ if (parameters.clipDistance2) {
160
+ gl.enable(GL.CLIP_DISTANCE2_WEBGL);
161
+ }
162
+ if (parameters.clipDistance3) {
163
+ gl.enable(GL.CLIP_DISTANCE3_WEBGL);
164
+ }
165
+ if (parameters.clipDistance4) {
166
+ gl.enable(GL.CLIP_DISTANCE4_WEBGL);
167
+ }
168
+ if (parameters.clipDistance5) {
169
+ gl.enable(GL.CLIP_DISTANCE5_WEBGL);
170
+ }
171
+ if (parameters.clipDistance6) {
172
+ gl.enable(GL.CLIP_DISTANCE6_WEBGL);
173
+ }
174
+ if (parameters.clipDistance7) {
175
+ gl.enable(GL.CLIP_DISTANCE7_WEBGL);
176
+ }
177
+ }
178
+ // DEPTH STENCIL
179
+ if (parameters.depthWriteEnabled !== undefined) {
180
+ gl.depthMask(mapBoolean('depthWriteEnabled', parameters.depthWriteEnabled));
181
+ }
182
+ if (parameters.depthCompare) {
183
+ parameters.depthCompare !== 'always' ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST);
184
+ gl.depthFunc(convertCompareFunction('depthCompare', parameters.depthCompare));
185
+ }
186
+ if (parameters.stencilWriteMask) {
187
+ const mask = parameters.stencilWriteMask;
188
+ gl.stencilMaskSeparate(GL.FRONT, mask);
189
+ gl.stencilMaskSeparate(GL.BACK, mask);
190
+ }
191
+ if (parameters.stencilReadMask) {
192
+ // stencilReadMask is handle inside stencil***Compare.
193
+ log.warn('stencilReadMask not supported under WebGL');
194
+ }
195
+ if (parameters.stencilCompare) {
196
+ const mask = parameters.stencilReadMask || 0xffffffff;
197
+ const glValue = convertCompareFunction('depthCompare', parameters.stencilCompare);
198
+ // TODO - ensure back doesn't overwrite
199
+ parameters.stencilCompare !== 'always'
200
+ ? gl.enable(GL.STENCIL_TEST)
201
+ : gl.disable(GL.STENCIL_TEST);
202
+ gl.stencilFuncSeparate(GL.FRONT, glValue, 0, mask);
203
+ gl.stencilFuncSeparate(GL.BACK, glValue, 0, mask);
204
+ }
205
+ if (parameters.stencilPassOperation &&
206
+ parameters.stencilFailOperation &&
207
+ parameters.stencilDepthFailOperation) {
208
+ const dppass = convertStencilOperation('stencilPassOperation', parameters.stencilPassOperation);
209
+ const sfail = convertStencilOperation('stencilFailOperation', parameters.stencilFailOperation);
210
+ const dpfail = convertStencilOperation('stencilDepthFailOperation', parameters.stencilDepthFailOperation);
211
+ gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);
212
+ gl.stencilOpSeparate(GL.BACK, sfail, dpfail, dppass);
213
+ }
214
+ // stencilDepthFailOperation() {
215
+ // // handled by stencilPassOperation
216
+ // },
217
+ // stencilFailOperation() {
218
+ // // handled by stencilPassOperation
219
+ // },
220
+ // COLOR STATE
221
+ if (parameters.blendColorOperation || parameters.blendAlphaOperation) {
222
+ gl.enable(GL.BLEND);
223
+ const colorEquation = convertBlendOperationToEquation('blendColorOperation', parameters.blendColorOperation || 'add');
224
+ const alphaEquation = convertBlendOperationToEquation('blendAlphaOperation', parameters.blendAlphaOperation || 'add');
225
+ gl.blendEquationSeparate(colorEquation, alphaEquation);
226
+ const colorSrcFactor = convertBlendFactorToFunction('blendColorSrcFactor', parameters.blendColorSrcFactor || 'one');
227
+ const colorDstFactor = convertBlendFactorToFunction('blendColorDstFactor', parameters.blendColorDstFactor || 'zero');
228
+ const alphaSrcFactor = convertBlendFactorToFunction('blendAlphaSrcFactor', parameters.blendAlphaSrcFactor || 'one');
229
+ const alphaDstFactor = convertBlendFactorToFunction('blendAlphaDstFactor', parameters.blendAlphaDstFactor || 'zero');
230
+ gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);
231
+ }
111
232
  }
233
+ /*
234
+ rasterizationState: {
235
+ cullMode: "back",
236
+ },
237
+
238
+ depthStencilState: {
239
+ depthWriteEnabled: true,
240
+ depthCompare: "less",
241
+ format: "depth24plus-stencil8",
242
+ },
243
+
244
+ colorStates: [
245
+ {
246
+ format: "bgra8unorm",
247
+ // colorBlend.srcFactor = wgpu::BlendFactor::SrcAlpha;
248
+ // colorBlend.dstFactor = wgpu::BlendFactor::OneMinusSrcAlpha;
249
+ // alphaBlend.srcFactor = wgpu::BlendFactor::SrcAlpha;
250
+ // alphaBlend.dstFactor = wgpu::BlendFactor::OneMinusSrcAlpha;
251
+ },
252
+ ],
253
+ });
254
+ */
112
255
  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
- });
256
+ return map(parameter, value, {
257
+ never: GL.NEVER,
258
+ less: GL.LESS,
259
+ equal: GL.EQUAL,
260
+ 'less-equal': GL.LEQUAL,
261
+ greater: GL.GREATER,
262
+ 'not-equal': GL.NOTEQUAL,
263
+ 'greater-equal': GL.GEQUAL,
264
+ always: GL.ALWAYS
265
+ });
123
266
  }
124
267
  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
- });
268
+ return map(parameter, value, {
269
+ [GL.NEVER]: 'never',
270
+ [GL.LESS]: 'less',
271
+ [GL.EQUAL]: 'equal',
272
+ [GL.LEQUAL]: 'less-equal',
273
+ [GL.GREATER]: 'greater',
274
+ [GL.NOTEQUAL]: 'not-equal',
275
+ [GL.GEQUAL]: 'greater-equal',
276
+ [GL.ALWAYS]: 'always'
277
+ });
135
278
  }
136
279
  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
- });
280
+ return map(parameter, value, {
281
+ keep: GL.KEEP,
282
+ zero: GL.ZERO,
283
+ replace: GL.REPLACE,
284
+ invert: GL.INVERT,
285
+ 'increment-clamp': GL.INCR,
286
+ 'decrement-clamp': GL.DECR,
287
+ 'increment-wrap': GL.INCR_WRAP,
288
+ 'decrement-wrap': GL.DECR_WRAP
289
+ });
147
290
  }
148
291
  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
- });
292
+ return map(parameter, value, {
293
+ add: GL.FUNC_ADD,
294
+ subtract: GL.FUNC_SUBTRACT,
295
+ 'reverse-subtract': GL.FUNC_REVERSE_SUBTRACT,
296
+ min: GL.MIN,
297
+ max: GL.MAX
298
+ });
156
299
  }
157
300
  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
- });
301
+ return map(parameter, value, {
302
+ one: GL.ONE,
303
+ zero: GL.ZERO,
304
+ 'src-color': GL.SRC_COLOR,
305
+ 'one-minus-src-color': GL.ONE_MINUS_SRC_COLOR,
306
+ 'dst-color': GL.DST_COLOR,
307
+ 'one-minus-dst-color': GL.ONE_MINUS_DST_COLOR,
308
+ 'src-alpha': GL.SRC_ALPHA,
309
+ 'one-minus-src-alpha': GL.ONE_MINUS_SRC_ALPHA,
310
+ 'dst-alpha': GL.DST_ALPHA,
311
+ 'one-minus-dst-alpha': GL.ONE_MINUS_DST_ALPHA
312
+ });
170
313
  }
171
314
  function message(parameter, value) {
172
- return `Illegal parameter ${value} for ${parameter}`;
315
+ return `Illegal parameter ${value} for ${parameter}`;
173
316
  }
174
317
  function map(parameter, value, valueMap) {
175
- if (!(value in valueMap)) {
176
- throw new Error(message(parameter, value));
177
- }
178
- return valueMap[value];
318
+ if (!(value in valueMap)) {
319
+ throw new Error(message(parameter, value));
320
+ }
321
+ return valueMap[value];
179
322
  }
180
323
  function mapBoolean(parameter, value) {
181
- return value;
324
+ return value;
182
325
  }
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[GL.TEXTURE_WRAP_S] = convertAddressMode(props.addressModeU);
15
+ }
16
+ if (props.addressModeV) {
17
+ params[GL.TEXTURE_WRAP_T] = convertAddressMode(props.addressModeV);
18
+ }
19
+ if (props.addressModeW) {
20
+ params[GL.TEXTURE_WRAP_R] = convertAddressMode(props.addressModeW);
21
+ }
22
+ if (props.magFilter) {
23
+ params[GL.TEXTURE_MAG_FILTER] = convertMaxFilterMode(props.magFilter);
24
+ }
25
+ if (props.minFilter || props.mipmapFilter) {
26
+ // TODO - arbitrary choice of linear?
27
+ params[GL.TEXTURE_MIN_FILTER] = convertMinFilterMode(props.minFilter || 'linear', props.mipmapFilter);
28
+ }
29
+ if (props.lodMinClamp !== undefined) {
30
+ params[GL.TEXTURE_MIN_LOD] = props.lodMinClamp;
31
+ }
32
+ if (props.lodMaxClamp !== undefined) {
33
+ params[GL.TEXTURE_MAX_LOD] = props.lodMaxClamp;
34
+ }
35
+ if (props.type === 'comparison-sampler') {
36
+ // Setting prop.compare turns this into a comparison sampler
37
+ params[GL.TEXTURE_COMPARE_MODE] = GL.COMPARE_REF_TO_TEXTURE;
38
+ }
39
+ if (props.compare) {
40
+ params[GL.TEXTURE_COMPARE_FUNC] = convertCompareFunction('compare', props.compare);
41
+ }
42
+ // Note depends on WebGL extension
43
+ if (props.maxAnisotropy) {
44
+ params[GL.TEXTURE_MAX_ANISOTROPY_EXT] = 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 GL.CLAMP_TO_EDGE;
54
+ case 'repeat':
55
+ return GL.REPEAT;
56
+ case 'mirror-repeat':
57
+ return GL.MIRRORED_REPEAT;
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 GL.NEAREST;
64
+ case 'linear':
65
+ return GL.LINEAR;
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' ? GL.NEAREST_MIPMAP_NEAREST : GL.NEAREST_MIPMAP_LINEAR;
79
+ case 'linear':
80
+ return mipmapFilter === 'nearest' ? GL.LINEAR_MIPMAP_NEAREST : GL.LINEAR_MIPMAP_LINEAR;
81
+ }
75
82
  }
76
- //# sourceMappingURL=sampler-parameters.js.map