@luma.gl/webgl 9.3.0-alpha.4 → 9.3.0-alpha.8

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 (210) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +1 -1
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +4 -1
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.d.ts +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  9. package/dist/adapter/converters/shader-formats.d.ts +1 -64
  10. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  11. package/dist/adapter/converters/shader-formats.js +1 -64
  12. package/dist/adapter/converters/shader-formats.js.map +1 -1
  13. package/dist/adapter/converters/webgl-shadertypes.d.ts +1 -3
  14. package/dist/adapter/converters/webgl-shadertypes.d.ts.map +1 -1
  15. package/dist/adapter/converters/webgl-shadertypes.js +1 -6
  16. package/dist/adapter/converters/webgl-shadertypes.js.map +1 -1
  17. package/dist/adapter/converters/webgl-texture-table.d.ts +8 -4
  18. package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -1
  19. package/dist/adapter/converters/webgl-texture-table.js +122 -58
  20. package/dist/adapter/converters/webgl-texture-table.js.map +1 -1
  21. package/dist/adapter/converters/webgl-vertex-formats.d.ts +1 -1
  22. package/dist/adapter/converters/webgl-vertex-formats.d.ts.map +1 -1
  23. package/dist/adapter/converters/webgl-vertex-formats.js +1 -1
  24. package/dist/adapter/converters/webgl-vertex-formats.js.map +1 -1
  25. package/dist/adapter/device-helpers/webgl-device-features.d.ts +1 -1
  26. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  27. package/dist/adapter/device-helpers/webgl-device-features.js +1 -2
  28. package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -1
  29. package/dist/adapter/device-helpers/webgl-device-info.d.ts +1 -1
  30. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -1
  31. package/dist/adapter/device-helpers/webgl-device-info.js +6 -1
  32. package/dist/adapter/device-helpers/webgl-device-info.js.map +1 -1
  33. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +1 -1
  34. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -1
  36. package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -1
  37. package/dist/adapter/helpers/format-utils.d.ts +1 -1
  38. package/dist/adapter/helpers/format-utils.d.ts.map +1 -1
  39. package/dist/adapter/helpers/format-utils.js +1 -1
  40. package/dist/adapter/helpers/format-utils.js.map +1 -1
  41. package/dist/adapter/helpers/get-shader-layout-from-glsl.js +30 -19
  42. package/dist/adapter/helpers/get-shader-layout-from-glsl.js.map +1 -1
  43. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  44. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  45. package/dist/adapter/helpers/set-uniform.js +1 -1
  46. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  47. package/dist/adapter/helpers/webgl-texture-utils.d.ts +1 -1
  48. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
  49. package/dist/adapter/helpers/webgl-texture-utils.js +4 -4
  50. package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -1
  51. package/dist/adapter/helpers/webgl-topology-utils.d.ts +1 -1
  52. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  53. package/dist/adapter/helpers/webgl-topology-utils.js +1 -1
  54. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -1
  55. package/dist/adapter/resources/webgl-buffer.d.ts +1 -1
  56. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgl-buffer.js +20 -5
  58. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  59. package/dist/adapter/resources/webgl-command-buffer.d.ts +3 -3
  60. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgl-command-buffer.js +22 -36
  62. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  63. package/dist/adapter/resources/webgl-command-encoder.d.ts +6 -5
  64. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  65. package/dist/adapter/resources/webgl-command-encoder.js +23 -8
  66. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  67. package/dist/adapter/resources/webgl-framebuffer.d.ts +3 -1
  68. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  69. package/dist/adapter/resources/webgl-framebuffer.js +10 -1
  70. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  71. package/dist/adapter/resources/webgl-query-set.d.ts +37 -31
  72. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-query-set.js +247 -96
  74. package/dist/adapter/resources/webgl-query-set.js.map +1 -1
  75. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  76. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-render-pass.js +25 -11
  78. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  79. package/dist/adapter/resources/webgl-render-pipeline.d.ts +17 -21
  80. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  81. package/dist/adapter/resources/webgl-render-pipeline.js +69 -167
  82. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  83. package/dist/adapter/resources/webgl-sampler.d.ts +1 -1
  84. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  85. package/dist/adapter/resources/webgl-sampler.js +1 -1
  86. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  87. package/dist/adapter/resources/webgl-shader.d.ts +1 -1
  88. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  89. package/dist/adapter/resources/webgl-shader.js +15 -8
  90. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  91. package/dist/adapter/resources/webgl-shared-render-pipeline.d.ts +24 -0
  92. package/dist/adapter/resources/webgl-shared-render-pipeline.d.ts.map +1 -0
  93. package/dist/adapter/resources/webgl-shared-render-pipeline.js +155 -0
  94. package/dist/adapter/resources/webgl-shared-render-pipeline.js.map +1 -0
  95. package/dist/adapter/resources/webgl-texture.d.ts +27 -6
  96. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  97. package/dist/adapter/resources/webgl-texture.js +199 -101
  98. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  99. package/dist/adapter/resources/webgl-transform-feedback.js +1 -1
  100. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
  101. package/dist/adapter/resources/webgl-vertex-array.d.ts +2 -2
  102. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  103. package/dist/adapter/resources/webgl-vertex-array.js +1 -1
  104. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -1
  105. package/dist/adapter/webgl-device.d.ts +6 -3
  106. package/dist/adapter/webgl-device.d.ts.map +1 -1
  107. package/dist/adapter/webgl-device.js +36 -4
  108. package/dist/adapter/webgl-device.js.map +1 -1
  109. package/dist/adapter/webgl-presentation-context.d.ts +21 -0
  110. package/dist/adapter/webgl-presentation-context.d.ts.map +1 -0
  111. package/dist/adapter/webgl-presentation-context.js +64 -0
  112. package/dist/adapter/webgl-presentation-context.js.map +1 -0
  113. package/dist/constants/index.d.ts +3 -0
  114. package/dist/constants/index.d.ts.map +1 -0
  115. package/dist/constants/index.js +5 -0
  116. package/dist/constants/index.js.map +1 -0
  117. package/dist/constants/webgl-constants.d.ts +822 -0
  118. package/dist/constants/webgl-constants.d.ts.map +1 -0
  119. package/dist/constants/webgl-constants.js +928 -0
  120. package/dist/constants/webgl-constants.js.map +1 -0
  121. package/dist/constants/webgl-types.d.ts +480 -0
  122. package/dist/constants/webgl-types.d.ts.map +1 -0
  123. package/dist/constants/webgl-types.js +6 -0
  124. package/dist/constants/webgl-types.js.map +1 -0
  125. package/dist/context/debug/webgl-developer-tools.js +1 -1
  126. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  127. package/dist/context/helpers/webgl-context-data.d.ts +1 -1
  128. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -1
  129. package/dist/context/helpers/webgl-extensions.d.ts +1 -1
  130. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -1
  131. package/dist/context/parameters/unified-parameter-api.d.ts +1 -1
  132. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  133. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  134. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  135. package/dist/context/parameters/webgl-parameter-tables.js +1 -1
  136. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  137. package/dist/context/polyfills/polyfill-webgl1-extensions.js +1 -1
  138. package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -1
  139. package/dist/dist.dev.js +1473 -824
  140. package/dist/dist.min.js +2 -2
  141. package/dist/index.cjs +3 -5491
  142. package/dist/index.cjs.map +4 -4
  143. package/dist/index.d.ts +2 -0
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +1 -0
  146. package/dist/index.js.map +1 -1
  147. package/dist/webgl-constants.d.ts +2 -0
  148. package/dist/webgl-constants.d.ts.map +1 -0
  149. package/dist/webgl-constants.js +5 -0
  150. package/dist/webgl-constants.js.map +1 -0
  151. package/dist/webgl-types.d.ts +2 -0
  152. package/dist/webgl-types.d.ts.map +1 -0
  153. package/dist/{types.js → webgl-types.js} +1 -1
  154. package/dist/webgl-types.js.map +1 -0
  155. package/package.json +18 -4
  156. package/src/adapter/converters/device-parameters.ts +6 -2
  157. package/src/adapter/converters/sampler-parameters.ts +1 -1
  158. package/src/adapter/converters/shader-formats.ts +1 -66
  159. package/src/adapter/converters/webgl-shadertypes.ts +1 -9
  160. package/src/adapter/converters/webgl-texture-table.ts +160 -68
  161. package/src/adapter/converters/webgl-vertex-formats.ts +1 -1
  162. package/src/adapter/device-helpers/webgl-device-features.ts +2 -3
  163. package/src/adapter/device-helpers/webgl-device-info.ts +7 -1
  164. package/src/adapter/device-helpers/webgl-device-limits.ts +1 -1
  165. package/src/adapter/helpers/format-utils.ts +1 -1
  166. package/src/adapter/helpers/get-shader-layout-from-glsl.ts +38 -20
  167. package/src/adapter/helpers/set-uniform.ts +1 -1
  168. package/src/adapter/helpers/webgl-texture-utils.ts +4 -4
  169. package/src/adapter/helpers/webgl-topology-utils.ts +1 -1
  170. package/src/adapter/resources/webgl-buffer.ts +17 -5
  171. package/src/adapter/resources/webgl-command-buffer.ts +28 -28
  172. package/src/adapter/resources/webgl-command-encoder.ts +28 -11
  173. package/src/adapter/resources/webgl-framebuffer.ts +12 -1
  174. package/src/adapter/resources/webgl-query-set.ts +295 -101
  175. package/src/adapter/resources/webgl-render-pass.ts +26 -13
  176. package/src/adapter/resources/webgl-render-pipeline.ts +101 -196
  177. package/src/adapter/resources/webgl-sampler.ts +1 -1
  178. package/src/adapter/resources/webgl-shader.ts +15 -8
  179. package/src/adapter/resources/webgl-shared-render-pipeline.ts +211 -0
  180. package/src/adapter/resources/webgl-texture.ts +324 -122
  181. package/src/adapter/resources/webgl-transform-feedback.ts +1 -1
  182. package/src/adapter/resources/webgl-vertex-array.ts +1 -1
  183. package/src/adapter/webgl-device.ts +50 -6
  184. package/src/adapter/webgl-presentation-context.ts +93 -0
  185. package/src/constants/index.d.ts.map +1 -0
  186. package/src/constants/index.js.map +1 -0
  187. package/src/constants/index.ts +31 -0
  188. package/src/constants/webgl-constants.d.ts.map +1 -0
  189. package/src/constants/webgl-constants.js.map +1 -0
  190. package/src/constants/webgl-constants.ts +1051 -0
  191. package/src/constants/webgl-types.d.ts.map +1 -0
  192. package/src/constants/webgl-types.js.map +1 -0
  193. package/src/constants/webgl-types.ts +813 -0
  194. package/src/context/debug/webgl-developer-tools.ts +1 -1
  195. package/src/context/helpers/webgl-context-data.ts +1 -1
  196. package/src/context/helpers/webgl-extensions.ts +1 -1
  197. package/src/context/parameters/unified-parameter-api.ts +1 -1
  198. package/src/context/parameters/webgl-parameter-tables.ts +1 -1
  199. package/src/context/polyfills/polyfill-webgl1-extensions.ts +1 -1
  200. package/src/index.ts +26 -0
  201. package/src/webgl-constants.d.ts.map +1 -0
  202. package/src/webgl-constants.js.map +1 -0
  203. package/src/webgl-constants.ts +5 -0
  204. package/src/webgl-types.d.ts.map +1 -0
  205. package/src/webgl-types.js.map +1 -0
  206. package/src/webgl-types.ts +29 -0
  207. package/dist/types.d.ts +0 -11
  208. package/dist/types.d.ts.map +0 -1
  209. package/dist/types.js.map +0 -1
  210. package/src/types.ts +0 -14
@@ -1,5 +1,5 @@
1
1
  import { Sampler, SamplerProps } from '@luma.gl/core';
2
- import { GLSamplerParameters } from '@luma.gl/constants';
2
+ import { GLSamplerParameters } from '@luma.gl/webgl/constants';
3
3
  import type { WebGLDevice } from "../webgl-device.js";
4
4
  /**
5
5
  * Sampler object -
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-sampler.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAK,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAC,WAAW,EAAC,2BAAwB;AAEjD;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;gBAE7B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY;IAQ3C,OAAO,IAAI,IAAI;IAQf,QAAQ,IAAI,MAAM;IAI3B,4CAA4C;IAC5C,OAAO,CAAC,qBAAqB;CAgB9B"}
1
+ {"version":3,"file":"webgl-sampler.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAK,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAEjE,OAAO,KAAK,EAAC,WAAW,EAAC,2BAAwB;AAEjD;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;gBAE7B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY;IAQ3C,OAAO,IAAI,IAAI;IAQf,QAAQ,IAAI,MAAM;IAI3B,4CAA4C;IAC5C,OAAO,CAAC,qBAAqB;CAgB9B"}
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { Sampler } from '@luma.gl/core';
5
- import { GL } from '@luma.gl/constants';
5
+ import { GL } from '@luma.gl/webgl/constants';
6
6
  import { convertSamplerParametersToWebGL } from "../converters/sampler-parameters.js";
7
7
  /**
8
8
  * Sampler object -
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-sampler.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,OAAO,EAAe,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,EAAE,EAAsB,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAC,+BAA+B,EAAC,4CAAyC;AAGjF;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO;IAC9B,MAAM,CAAc;IACpB,MAAM,CAAe;IACrB,UAAU,CAAsB;IAEzC,YAAY,MAAmB,EAAE,KAAmB;QAClD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QAC7D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAEQ,OAAO;QACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,uCAAuC;YACvC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAEQ,QAAQ;QACf,OAAO,WAAW,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7D,CAAC;IAED,4CAA4C;IACpC,qBAAqB,CAAC,UAA+B;QAC3D,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACxD,+GAA+G;YAC/G,uEAAuE;YACvE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAA4C,CAAC;YACvE,QAAQ,KAAK,EAAE,CAAC;gBACd,WAAwB;gBACxB;oBACE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC5D,MAAM;gBACR;oBACE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC5D,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"webgl-sampler.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,OAAO,EAAe,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,EAAE,EAAsB,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAC,+BAA+B,EAAC,4CAAyC;AAGjF;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO;IAC9B,MAAM,CAAc;IACpB,MAAM,CAAe;IACrB,UAAU,CAAsB;IAEzC,YAAY,MAAmB,EAAE,KAAmB;QAClD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QAC7D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAEQ,OAAO;QACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,uCAAuC;YACvC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAEQ,QAAQ;QACf,OAAO,WAAW,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7D,CAAC;IAED,4CAA4C;IACpC,qBAAqB,CAAC,UAA+B;QAC3D,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACxD,+GAA+G;YAC/G,uEAAuE;YACvE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAA4C,CAAC;YACvE,QAAQ,KAAK,EAAE,CAAC;gBACd,WAAwB;gBACxB;oBACE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC5D,MAAM;gBACR;oBACE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC5D,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -13,7 +13,7 @@ export declare class WEBGLShader extends Shader {
13
13
  getCompilationInfoSync(): readonly CompilerMessage[];
14
14
  getTranslatedSource(): string | null;
15
15
  /** Compile a shader and get compilation status */
16
- protected _compile(source: string): Promise<void>;
16
+ protected _compile(source: string): void | Promise<void>;
17
17
  /** Use KHR_parallel_shader_compile extension if available */
18
18
  protected _waitForCompilationComplete(): Promise<void>;
19
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAM,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C;;GAEG;AACH,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW;IAoB1C,OAAO,IAAI,IAAI;IAWxB,IAAI,sBAAsB,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,CAKrE;IAEc,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAK/D,sBAAsB,IAAI,SAAS,eAAe,EAAE;IAKpD,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAQ7C,kDAAkD;cAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCvD,6DAA6D;cAC7C,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5D;;;;OAIG;IACH,SAAS,CAAC,qBAAqB;CAKhC"}
1
+ {"version":3,"file":"webgl-shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAM,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C;;GAEG;AACH,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW;IA0B1C,OAAO,IAAI,IAAI;IAWxB,IAAI,sBAAsB,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,CAKrE;IAEc,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAK/D,sBAAsB,IAAI,SAAS,eAAe,EAAE;IAKpD,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAQ7C,kDAAkD;IAClD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCxD,6DAA6D;cAC7C,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5D;;;;OAIG;IACH,SAAS,CAAC,qBAAqB;CAKhC"}
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { Shader, log } from '@luma.gl/core';
5
- import { GL } from '@luma.gl/constants';
5
+ import { GL } from '@luma.gl/webgl/constants';
6
6
  import { parseShaderCompilerLog } from "../helpers/parse-shader-compiler-log.js";
7
7
  /**
8
8
  * An immutable compiled shader program that execute portions of the GPU Pipeline
@@ -25,7 +25,13 @@ export class WEBGLShader extends Shader {
25
25
  }
26
26
  // default framebuffer handle is null, so we can't set spector metadata...
27
27
  device._setWebGLDebugMetadata(this.handle, this, { spector: this.props });
28
- this._compile(this.source);
28
+ const compilationStatus = this._compile(this.source);
29
+ if (compilationStatus && typeof compilationStatus.catch === 'function') {
30
+ compilationStatus.catch(() => {
31
+ // Ensure any async compile status errors are consumed.
32
+ this.compilationStatus = 'error';
33
+ });
34
+ }
29
35
  }
30
36
  destroy() {
31
37
  if (this.handle) {
@@ -58,7 +64,7 @@ export class WEBGLShader extends Shader {
58
64
  }
59
65
  // PRIVATE METHODS
60
66
  /** Compile a shader and get compilation status */
61
- async _compile(source) {
67
+ _compile(source) {
62
68
  source = source.startsWith('#version ') ? source : `#version 300 es\n${source}`;
63
69
  const { gl } = this.device;
64
70
  gl.shaderSource(this.handle, source);
@@ -80,11 +86,12 @@ export class WEBGLShader extends Shader {
80
86
  }
81
87
  // async case
82
88
  log.once(1, 'Shader compilation is asynchronous')();
83
- await this._waitForCompilationComplete();
84
- log.info(2, `Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)();
85
- this._getCompilationStatus();
86
- // The `Shader` base class will determine if debug window should be opened based on this.compilationStatus
87
- this.debugShader();
89
+ return this._waitForCompilationComplete().then(() => {
90
+ log.info(2, `Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)();
91
+ this._getCompilationStatus();
92
+ // The `Shader` base class will determine if debug window should be opened based on this.compilationStatus
93
+ this.debugShader();
94
+ });
88
95
  }
89
96
  /** Use KHR_parallel_shader_compile extension if available */
90
97
  async _waitForCompilationComplete() {
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-shader.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgl-shader.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { SharedRenderPipeline, type ShaderLayout, type SharedRenderPipelineProps } from '@luma.gl/core';
2
+ import type { WebGLDevice } from "../webgl-device.js";
3
+ import type { WEBGLShader } from "./webgl-shader.js";
4
+ export declare class WEBGLSharedRenderPipeline extends SharedRenderPipeline {
5
+ readonly device: WebGLDevice;
6
+ readonly handle: WebGLProgram;
7
+ readonly vs: WEBGLShader;
8
+ readonly fs: WEBGLShader;
9
+ introspectedLayout: ShaderLayout;
10
+ linkStatus: 'pending' | 'success' | 'error';
11
+ constructor(device: WebGLDevice, props: SharedRenderPipelineProps & {
12
+ handle?: WebGLProgram;
13
+ vs: WEBGLShader;
14
+ fs: WEBGLShader;
15
+ });
16
+ destroy(): void;
17
+ protected _linkShaders(): Promise<void>;
18
+ _reportLinkStatus(status: 'success' | 'link-error' | 'validation-error'): Promise<void>;
19
+ _getLinkStatus(): 'success' | 'link-error' | 'validation-error';
20
+ _initializeSamplerUniforms(): void;
21
+ _assignSamplerUniform(location: WebGLUniformLocation, activeInfo: WebGLActiveInfo, isArray: boolean, textureUnit: number): number;
22
+ _waitForLinkComplete(): Promise<void>;
23
+ }
24
+ //# sourceMappingURL=webgl-shared-render-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-shared-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shared-render-pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,oBAAoB,EAEpB,KAAK,YAAY,EACjB,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAC;AAIvB,OAAO,KAAK,EAAC,WAAW,EAAC,2BAAwB;AACjD,OAAO,KAAK,EAAC,WAAW,EAAC,0BAAuB;AAIhD,qBAAa,yBAA0B,SAAQ,oBAAoB;IACjE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,kBAAkB,EAAE,YAAY,CAAgD;IAChF,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAa;gBAGtD,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,yBAAyB,GAAG;QACjC,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,EAAE,EAAE,WAAW,CAAC;QAChB,EAAE,EAAE,WAAW,CAAC;KACjB;IAyBM,OAAO,IAAI,IAAI;cAYR,YAAY;IAqBtB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC7F,cAAc,IAAI,SAAS,GAAG,YAAY,GAAG,kBAAkB;IAoB/D,0BAA0B,IAAI,IAAI;IAoBlC,qBAAqB,CACnB,QAAQ,EAAE,oBAAoB,EAC9B,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM;IAgBH,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB5C"}
@@ -0,0 +1,155 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { GL } from '@luma.gl/webgl/constants';
5
+ import { SharedRenderPipeline, log } from '@luma.gl/core';
6
+ import { getShaderLayoutFromGLSL } from "../helpers/get-shader-layout-from-glsl.js";
7
+ import { isGLSamplerType } from "../converters/webgl-shadertypes.js";
8
+ const LOG_PROGRAM_PERF_PRIORITY = 4;
9
+ export class WEBGLSharedRenderPipeline extends SharedRenderPipeline {
10
+ device;
11
+ handle;
12
+ vs;
13
+ fs;
14
+ introspectedLayout = { attributes: [], bindings: [], uniforms: [] };
15
+ linkStatus = 'pending';
16
+ constructor(device, props) {
17
+ super(device, props);
18
+ this.device = device;
19
+ this.handle = props.handle || this.device.gl.createProgram();
20
+ this.vs = props.vs;
21
+ this.fs = props.fs;
22
+ if (props.varyings && props.varyings.length > 0) {
23
+ this.device.gl.transformFeedbackVaryings(this.handle, props.varyings, props.bufferMode || 35981);
24
+ }
25
+ this._linkShaders();
26
+ // Introspection happens after linking to build wrapper-facing layout metadata.
27
+ // It is not a prerequisite for deciding whether a shared `WebGLProgram` can be
28
+ // reused; that decision must remain based on the shared-pipeline cache key alone.
29
+ log.time(3, `RenderPipeline ${this.id} - shaderLayout introspection`)();
30
+ this.introspectedLayout = getShaderLayoutFromGLSL(this.device.gl, this.handle);
31
+ log.timeEnd(3, `RenderPipeline ${this.id} - shaderLayout introspection`)();
32
+ }
33
+ destroy() {
34
+ if (this.destroyed) {
35
+ return;
36
+ }
37
+ this.device.gl.useProgram(null);
38
+ this.device.gl.deleteProgram(this.handle);
39
+ // @ts-expect-error
40
+ this.handle.destroyed = true;
41
+ this.destroyResource();
42
+ }
43
+ async _linkShaders() {
44
+ const { gl } = this.device;
45
+ gl.attachShader(this.handle, this.vs.handle);
46
+ gl.attachShader(this.handle, this.fs.handle);
47
+ log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
48
+ gl.linkProgram(this.handle);
49
+ log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
50
+ if (!this.device.features.has('compilation-status-async-webgl')) {
51
+ const status = this._getLinkStatus();
52
+ this._reportLinkStatus(status);
53
+ return;
54
+ }
55
+ log.once(1, 'RenderPipeline linking is asynchronous')();
56
+ await this._waitForLinkComplete();
57
+ log.info(2, `RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();
58
+ const status = this._getLinkStatus();
59
+ this._reportLinkStatus(status);
60
+ }
61
+ async _reportLinkStatus(status) {
62
+ switch (status) {
63
+ case 'success':
64
+ return;
65
+ default:
66
+ const errorType = status === 'link-error' ? 'Link error' : 'Validation error';
67
+ switch (this.vs.compilationStatus) {
68
+ case 'error':
69
+ this.vs.debugShader();
70
+ throw new Error(`${this} ${errorType} during compilation of ${this.vs}`);
71
+ case 'pending':
72
+ await this.vs.asyncCompilationStatus;
73
+ this.vs.debugShader();
74
+ break;
75
+ case 'success':
76
+ break;
77
+ }
78
+ switch (this.fs?.compilationStatus) {
79
+ case 'error':
80
+ this.fs.debugShader();
81
+ throw new Error(`${this} ${errorType} during compilation of ${this.fs}`);
82
+ case 'pending':
83
+ await this.fs.asyncCompilationStatus;
84
+ this.fs.debugShader();
85
+ break;
86
+ case 'success':
87
+ break;
88
+ }
89
+ const linkErrorLog = this.device.gl.getProgramInfoLog(this.handle);
90
+ this.device.reportError(new Error(`${errorType} during ${status}: ${linkErrorLog}`), this)();
91
+ this.device.debug();
92
+ }
93
+ }
94
+ _getLinkStatus() {
95
+ const { gl } = this.device;
96
+ const linked = gl.getProgramParameter(this.handle, 35714);
97
+ if (!linked) {
98
+ this.linkStatus = 'error';
99
+ return 'link-error';
100
+ }
101
+ this._initializeSamplerUniforms();
102
+ gl.validateProgram(this.handle);
103
+ const validated = gl.getProgramParameter(this.handle, 35715);
104
+ if (!validated) {
105
+ this.linkStatus = 'error';
106
+ return 'validation-error';
107
+ }
108
+ this.linkStatus = 'success';
109
+ return 'success';
110
+ }
111
+ _initializeSamplerUniforms() {
112
+ const { gl } = this.device;
113
+ gl.useProgram(this.handle);
114
+ let textureUnit = 0;
115
+ const uniformCount = gl.getProgramParameter(this.handle, 35718);
116
+ for (let uniformIndex = 0; uniformIndex < uniformCount; uniformIndex++) {
117
+ const activeInfo = gl.getActiveUniform(this.handle, uniformIndex);
118
+ if (activeInfo && isGLSamplerType(activeInfo.type)) {
119
+ const isArray = activeInfo.name.endsWith('[0]');
120
+ const uniformName = isArray ? activeInfo.name.slice(0, -3) : activeInfo.name;
121
+ const location = gl.getUniformLocation(this.handle, uniformName);
122
+ if (location !== null) {
123
+ textureUnit = this._assignSamplerUniform(location, activeInfo, isArray, textureUnit);
124
+ }
125
+ }
126
+ }
127
+ }
128
+ _assignSamplerUniform(location, activeInfo, isArray, textureUnit) {
129
+ const { gl } = this.device;
130
+ if (isArray && activeInfo.size > 1) {
131
+ const textureUnits = Int32Array.from({ length: activeInfo.size }, (_, arrayIndex) => textureUnit + arrayIndex);
132
+ gl.uniform1iv(location, textureUnits);
133
+ return textureUnit + activeInfo.size;
134
+ }
135
+ gl.uniform1i(location, textureUnit);
136
+ return textureUnit + 1;
137
+ }
138
+ async _waitForLinkComplete() {
139
+ const waitMs = async (ms) => await new Promise(resolve => setTimeout(resolve, ms));
140
+ const DELAY_MS = 10;
141
+ if (!this.device.features.has('compilation-status-async-webgl')) {
142
+ await waitMs(DELAY_MS);
143
+ return;
144
+ }
145
+ const { gl } = this.device;
146
+ for (;;) {
147
+ const complete = gl.getProgramParameter(this.handle, 37297);
148
+ if (complete) {
149
+ return;
150
+ }
151
+ await waitMs(DELAY_MS);
152
+ }
153
+ }
154
+ }
155
+ //# sourceMappingURL=webgl-shared-render-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-shared-render-pipeline.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shared-render-pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { type Device, type TextureProps, type TextureViewProps, type Sampler, type SamplerProps, type CopyExternalImageOptions, type CopyImageDataOptions, type TextureReadOptions, type TextureWriteOptions, Buffer, Texture } from '@luma.gl/core';
2
- import { GLSamplerParameters, GL, GLTextureTarget, GLTextureCubeMapTarget, GLTexelDataFormat, GLPixelType } from '@luma.gl/constants';
1
+ import { type Device, type TextureProps, type TextureViewProps, type Sampler, type SamplerProps, type CopyExternalImageOptions, type TextureReadOptions, type TextureWriteOptions, Buffer, Texture } from '@luma.gl/core';
2
+ import { GLSamplerParameters, GL, GLTextureTarget, GLTextureCubeMapTarget, GLTexelDataFormat, GLPixelType } from '@luma.gl/webgl/constants';
3
3
  import { WebGLDevice } from "../webgl-device.js";
4
4
  import { WEBGLFramebuffer } from "./webgl-framebuffer.js";
5
5
  import { WEBGLSampler } from "./webgl-sampler.js";
@@ -33,8 +33,10 @@ export declare class WEBGLTexture extends Texture {
33
33
  compressed: boolean;
34
34
  /** Texture binding slot - TODO - move to texture view? */
35
35
  _textureUnit: number;
36
- /** Chached framebuffer */
36
+ /** Cached framebuffer reused for color texture readback. */
37
37
  _framebuffer: WEBGLFramebuffer | null;
38
+ /** Cache key for the currently attached readback subresource `${mipLevel}:${layer}`. */
39
+ _framebufferAttachmentKey: string | null;
38
40
  constructor(device: Device, props: TextureProps);
39
41
  destroy(): void;
40
42
  createView(props: TextureViewProps): WEBGLTextureView;
@@ -43,11 +45,19 @@ export declare class WEBGLTexture extends Texture {
43
45
  width: number;
44
46
  height: number;
45
47
  };
46
- copyImageData(options_: CopyImageDataOptions): void;
47
- readBuffer(options?: TextureReadOptions, buffer?: Buffer): Buffer;
48
+ copyImageData(options_: any): void;
49
+ /**
50
+ * Reads a color texture subresource into a GPU buffer using `PIXEL_PACK_BUFFER`.
51
+ *
52
+ * @note Only first-pass color readback is supported. Unsupported formats and aspects throw
53
+ * before any WebGL calls are issued.
54
+ */
55
+ readBuffer(options?: TextureReadOptions & {
56
+ byteOffset?: number;
57
+ }, buffer?: Buffer): Buffer;
48
58
  readDataAsync(options?: TextureReadOptions): Promise<ArrayBuffer>;
49
59
  writeBuffer(buffer: Buffer, options_?: TextureWriteOptions): void;
50
- writeData(data: ArrayBuffer | ArrayBufferView, options_?: TextureWriteOptions): void;
60
+ writeData(data: ArrayBuffer | SharedArrayBuffer | ArrayBufferView, options_?: TextureWriteOptions): void;
51
61
  /** @todo - for now we always use 1 for maximum compatibility, we can fine tune later */
52
62
  private _getRowByteAlignment;
53
63
  /**
@@ -56,6 +66,17 @@ export declare class WEBGLTexture extends Texture {
56
66
  */
57
67
  _getFramebuffer(): WEBGLFramebuffer;
58
68
  readDataSyncWebGL(options_?: TextureReadOptions): ArrayBuffer;
69
+ /**
70
+ * Iterates the requested mip/layer/slice range, reattaching the cached read framebuffer as
71
+ * needed before delegating the actual `readPixels()` call to the supplied callback.
72
+ */
73
+ private _readColorTextureLayers;
74
+ /**
75
+ * Attaches a single color subresource to the cached read framebuffer.
76
+ *
77
+ * @note Repeated attachments of the same `(mipLevel, layer)` tuple are skipped.
78
+ */
79
+ private _attachReadSubresource;
59
80
  /**
60
81
  * @note - this is used by the DynamicTexture class to generate mipmaps on WebGL
61
82
  */
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAGxB,MAAM,EACN,OAAO,EAER,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,mBAAmB,EAEnB,EAAE,EACF,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAC5C,OAAO,EAAC,gBAAgB,EAAC,+BAA4B;AACrD,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAC7C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAKtD;;GAEG;AACH,qBAAa,YAAa,SAAQ,OAAO;IAEvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,MAAM,EAAE,YAAY,CAAC;IAGrB,OAAO,EAAE,YAAY,CAAa;IAClC,IAAI,EAAE,gBAAgB,CAAC;IAEvB;;;;;;;;OAQG;IACH,QAAQ,EAAE,eAAe,CAAC;IAC1B,uDAAuD;IACvD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,uDAAuD;IACvD,MAAM,EAAE,WAAW,CAAC;IACpB,8EAA8E;IAC9E,gBAAgB,EAAE,EAAE,CAAC;IACrB,gDAAgD;IAChD,UAAU,EAAE,OAAO,CAAC;IAGpB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAK;IACzB,0BAA0B;IAC1B,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAQ;gBAEjC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;IAoDtC,OAAO,IAAI,IAAI;IAcxB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB;IAI5C,UAAU,CAAC,OAAO,GAAE,OAAO,GAAG,YAAiB,GAAG,IAAI;IAO/D,iBAAiB,CAAC,QAAQ,EAAE,wBAAwB,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;IAuCtF,aAAa,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAgEnD,UAAU,CAAC,OAAO,GAAE,kBAAuB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAI/D,aAAa,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAI3E,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,mBAAwB;IAE9D,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,EAAE,QAAQ,GAAE,mBAAwB,GAAG,IAAI;IAyDxF,wFAAwF;IACxF,OAAO,CAAC,oBAAoB;IAY5B;;;OAGG;IACH,eAAe;IAYN,iBAAiB,CAAC,QAAQ,GAAE,kBAAuB,GAAG,WAAW;IAsD1E;;OAEG;IACM,oBAAoB,CAAC,OAAO,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI;IAuBhE;;OAEG;IACH,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI;IA6C5D,cAAc,IAAI,MAAM;IAIxB,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAapC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAWnD;AAID,gFAAgF;AAChF,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,GACjE,eAAe,CAWjB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,EAClE,KAAK,EAAE,MAAM,GACZ,eAAe,GAAG,sBAAsB,CAE1C"}
1
+ {"version":3,"file":"webgl-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"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"}