@luma.gl/webgl 9.1.0-alpha.9 → 9.1.0-beta.11

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 (198) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +3 -3
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +1 -0
  4. package/dist/adapter/converters/device-parameters.js.map +1 -0
  5. package/dist/adapter/converters/sampler-parameters.js +7 -4
  6. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  7. package/dist/adapter/converters/shader-formats.js +1 -0
  8. package/dist/adapter/converters/shader-formats.js.map +1 -0
  9. package/dist/adapter/converters/vertex-formats.js +1 -0
  10. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  11. package/dist/adapter/converters/webgl-texture-table.d.ts +40 -0
  12. package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -0
  13. package/dist/adapter/converters/webgl-texture-table.js +304 -0
  14. package/dist/adapter/converters/webgl-texture-table.js.map +1 -0
  15. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  16. package/dist/adapter/device-helpers/webgl-device-features.js +2 -2
  17. package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -0
  18. package/dist/adapter/device-helpers/webgl-device-info.js +1 -0
  19. package/dist/adapter/device-helpers/webgl-device-info.js.map +1 -0
  20. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -0
  21. package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -0
  22. package/dist/adapter/helpers/decode-webgl-types.js +1 -0
  23. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  24. package/dist/adapter/helpers/format-utils.d.ts.map +1 -0
  25. package/dist/{classic → adapter/helpers}/format-utils.js +7 -0
  26. package/dist/adapter/helpers/format-utils.js.map +1 -0
  27. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  28. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  29. package/dist/adapter/helpers/get-shader-layout.js +5 -4
  30. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  31. package/dist/adapter/helpers/parse-shader-compiler-log.js +1 -0
  32. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  33. package/dist/adapter/helpers/set-uniform.js +1 -0
  34. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  35. package/dist/adapter/helpers/typed-array-utils.d.ts.map +1 -0
  36. package/dist/{classic → adapter/helpers}/typed-array-utils.js +1 -0
  37. package/dist/adapter/helpers/typed-array-utils.js.map +1 -0
  38. package/dist/adapter/helpers/webgl-texture-utils.d.ts +96 -25
  39. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
  40. package/dist/adapter/helpers/webgl-texture-utils.js +225 -236
  41. package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -0
  42. package/dist/adapter/helpers/webgl-topology-utils.js +1 -0
  43. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  44. package/dist/adapter/resources/webgl-buffer.js +1 -0
  45. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  46. package/dist/adapter/resources/webgl-command-buffer.d.ts +59 -2
  47. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  48. package/dist/adapter/resources/webgl-command-buffer.js +89 -32
  49. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  50. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-command-encoder.js +4 -0
  52. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  53. package/dist/adapter/resources/webgl-external-texture.js +15 -0
  54. package/dist/adapter/resources/webgl-external-texture.js.map +1 -0
  55. package/dist/adapter/resources/webgl-framebuffer.d.ts +33 -35
  56. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgl-framebuffer.js +68 -73
  58. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  59. package/dist/adapter/resources/webgl-query-set.js +1 -0
  60. package/dist/adapter/resources/webgl-query-set.js.map +1 -0
  61. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  62. package/dist/adapter/resources/webgl-render-pass.js +30 -17
  63. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  64. package/dist/adapter/resources/webgl-render-pipeline.d.ts +2 -4
  65. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  66. package/dist/adapter/resources/webgl-render-pipeline.js +33 -18
  67. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  68. package/dist/adapter/resources/webgl-sampler.js +1 -0
  69. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  70. package/dist/adapter/resources/webgl-shader.d.ts +1 -0
  71. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  72. package/dist/adapter/resources/webgl-shader.js +8 -5
  73. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  74. package/dist/adapter/resources/webgl-texture-view.js +1 -0
  75. package/dist/adapter/resources/webgl-texture-view.js.map +1 -0
  76. package/dist/adapter/resources/webgl-texture.d.ts +32 -20
  77. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  78. package/dist/adapter/resources/webgl-texture.js +158 -218
  79. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  80. package/dist/adapter/resources/webgl-transform-feedback.js +1 -0
  81. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  82. package/dist/adapter/resources/webgl-vertex-array.js +1 -0
  83. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  84. package/dist/adapter/webgl-adapter.d.ts.map +1 -1
  85. package/dist/adapter/webgl-adapter.js +5 -10
  86. package/dist/adapter/webgl-adapter.js.map +1 -0
  87. package/dist/adapter/webgl-canvas-context.d.ts +1 -0
  88. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  89. package/dist/adapter/webgl-canvas-context.js +4 -0
  90. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  91. package/dist/adapter/webgl-device.d.ts +11 -14
  92. package/dist/adapter/webgl-device.d.ts.map +1 -1
  93. package/dist/adapter/webgl-device.js +60 -39
  94. package/dist/adapter/webgl-device.js.map +1 -0
  95. package/dist/context/debug/spector-types.js +2 -1
  96. package/dist/context/debug/spector-types.js.map +1 -0
  97. package/dist/context/debug/spector.d.ts +5 -5
  98. package/dist/context/debug/spector.d.ts.map +1 -1
  99. package/dist/context/debug/spector.js +7 -6
  100. package/dist/context/debug/spector.js.map +1 -0
  101. package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
  102. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  103. package/dist/context/debug/webgl-developer-tools.js +7 -19
  104. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  105. package/dist/context/helpers/create-browser-context.d.ts +6 -22
  106. package/dist/context/helpers/create-browser-context.d.ts.map +1 -1
  107. package/dist/context/helpers/create-browser-context.js +41 -32
  108. package/dist/context/helpers/create-browser-context.js.map +1 -0
  109. package/dist/context/helpers/webgl-context-data.js +1 -0
  110. package/dist/context/helpers/webgl-context-data.js.map +1 -0
  111. package/dist/context/helpers/webgl-extensions.js +1 -0
  112. package/dist/context/helpers/webgl-extensions.js.map +1 -0
  113. package/dist/context/parameters/unified-parameter-api.js +1 -0
  114. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  115. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  116. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  117. package/dist/context/parameters/webgl-parameter-tables.js +3 -2
  118. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  119. package/dist/context/polyfills/polyfill-webgl1-extensions.js +1 -0
  120. package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -0
  121. package/dist/context/state-tracker/deep-array-equal.js +1 -0
  122. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  123. package/dist/context/state-tracker/webgl-state-tracker.js +1 -0
  124. package/dist/context/state-tracker/webgl-state-tracker.js.map +1 -0
  125. package/dist/context/state-tracker/with-parameters.js +1 -0
  126. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  127. package/dist/deprecated/accessor.d.ts.map +1 -0
  128. package/dist/{classic → deprecated}/accessor.js +37 -1
  129. package/dist/deprecated/accessor.js.map +1 -0
  130. package/dist/dist.dev.js +2217 -2366
  131. package/dist/dist.min.js +2 -2
  132. package/dist/index.cjs +2098 -2240
  133. package/dist/index.cjs.map +4 -4
  134. package/dist/index.d.ts +2 -3
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +3 -4
  137. package/dist/index.js.map +1 -0
  138. package/dist/types.js +1 -0
  139. package/dist/types.js.map +1 -0
  140. package/dist/utils/fill-array.d.ts +4 -4
  141. package/dist/utils/fill-array.d.ts.map +1 -1
  142. package/dist/utils/fill-array.js +1 -0
  143. package/dist/utils/fill-array.js.map +1 -0
  144. package/dist/utils/load-script.js +1 -0
  145. package/dist/utils/load-script.js.map +1 -0
  146. package/dist/utils/split-uniforms-and-bindings.d.ts +1 -1
  147. package/dist/utils/split-uniforms-and-bindings.d.ts.map +1 -1
  148. package/dist/utils/split-uniforms-and-bindings.js +1 -0
  149. package/dist/utils/split-uniforms-and-bindings.js.map +1 -0
  150. package/dist/utils/uid.js +1 -0
  151. package/dist/utils/uid.js.map +1 -0
  152. package/package.json +5 -5
  153. package/src/adapter/converters/device-parameters.ts +3 -3
  154. package/src/adapter/converters/sampler-parameters.ts +6 -4
  155. package/src/adapter/converters/webgl-texture-table.ts +404 -0
  156. package/src/adapter/device-helpers/webgl-device-features.ts +5 -2
  157. package/src/{classic → adapter/helpers}/format-utils.ts +6 -0
  158. package/src/adapter/helpers/get-shader-layout.ts +7 -4
  159. package/src/adapter/helpers/webgl-texture-utils.ts +400 -57
  160. package/src/adapter/resources/webgl-command-buffer.ts +125 -41
  161. package/src/adapter/resources/webgl-command-encoder.ts +6 -0
  162. package/src/adapter/resources/webgl-external-texture.ts +14 -0
  163. package/src/adapter/resources/webgl-framebuffer.ts +77 -83
  164. package/src/adapter/resources/webgl-render-pass.ts +52 -41
  165. package/src/adapter/resources/webgl-render-pipeline.ts +44 -21
  166. package/src/adapter/resources/webgl-shader.ts +8 -6
  167. package/src/adapter/resources/webgl-texture.ts +183 -250
  168. package/src/adapter/webgl-adapter.ts +4 -12
  169. package/src/adapter/webgl-canvas-context.ts +4 -0
  170. package/src/adapter/webgl-device.ts +100 -72
  171. package/src/context/debug/spector-types.ts +1 -1
  172. package/src/context/debug/spector.ts +11 -11
  173. package/src/context/debug/webgl-developer-tools.ts +8 -31
  174. package/src/context/helpers/create-browser-context.ts +53 -63
  175. package/src/context/parameters/webgl-parameter-tables.ts +2 -2
  176. package/src/{classic → deprecated}/accessor.ts +44 -3
  177. package/src/index.ts +2 -5
  178. package/src/utils/fill-array.ts +4 -4
  179. package/src/utils/split-uniforms-and-bindings.ts +3 -3
  180. package/dist/adapter/converters/texture-formats.d.ts +0 -83
  181. package/dist/adapter/converters/texture-formats.d.ts.map +0 -1
  182. package/dist/adapter/converters/texture-formats.js +0 -511
  183. package/dist/classic/accessor.d.ts.map +0 -1
  184. package/dist/classic/clear.d.ts +0 -22
  185. package/dist/classic/clear.d.ts.map +0 -1
  186. package/dist/classic/clear.js +0 -86
  187. package/dist/classic/copy-and-blit.d.ts +0 -64
  188. package/dist/classic/copy-and-blit.d.ts.map +0 -1
  189. package/dist/classic/copy-and-blit.js +0 -194
  190. package/dist/classic/format-utils.d.ts.map +0 -1
  191. package/dist/classic/typed-array-utils.d.ts.map +0 -1
  192. package/src/adapter/converters/texture-formats.ts +0 -657
  193. package/src/classic/clear.ts +0 -115
  194. package/src/classic/copy-and-blit.ts +0 -323
  195. /package/dist/{classic → adapter/helpers}/format-utils.d.ts +0 -0
  196. /package/dist/{classic → adapter/helpers}/typed-array-utils.d.ts +0 -0
  197. /package/dist/{classic → deprecated}/accessor.d.ts +0 -0
  198. /package/src/{classic → adapter/helpers}/typed-array-utils.ts +0 -0
package/dist/index.d.ts CHANGED
@@ -13,12 +13,11 @@ export { WEBGLCommandEncoder } from "./adapter/resources/webgl-command-encoder.j
13
13
  export { WEBGLRenderPass } from "./adapter/resources/webgl-render-pass.js";
14
14
  export { WEBGLVertexArray } from "./adapter/resources/webgl-vertex-array.js";
15
15
  export { WEBGLTransformFeedback } from "./adapter/resources/webgl-transform-feedback.js";
16
- export { Accessor } from "./classic/accessor.js";
16
+ export { Accessor } from "./deprecated/accessor.js";
17
17
  export type { AccessorObject } from "./types.js";
18
18
  export { setDeviceParameters, withDeviceParameters } from "./adapter/converters/device-parameters.js";
19
- export { getShaderLayout } from "./adapter/helpers/get-shader-layout.js";
19
+ export { getShaderLayoutFromGLSL } from "./adapter/helpers/get-shader-layout.js";
20
20
  export { WebGLStateTracker } from "./context/state-tracker/webgl-state-tracker.js";
21
- export { TEXTURE_FORMATS as _TEXTURE_FORMATS } from "./adapter/converters/texture-formats.js";
22
21
  export { resetGLParameters, setGLParameters, getGLParameters } from "./context/parameters/unified-parameter-api.js";
23
22
  export { withGLParameters } from "./context/state-tracker/with-parameters.js";
24
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,YAAY,EAAC,iBAAiB,EAAC,wDAAqD;AAGpF,OAAO,EAAC,aAAa,EAAC,mCAAgC;AACtD,YAAY,EAAC,YAAY,EAAC,mCAAgC;AAG1D,OAAO,EAAC,WAAW,EAAC,kCAA+B;AACnD,OAAO,EAAC,kBAAkB,EAAC,0CAAuC;AAGlE,OAAO,EAAC,WAAW,EAAC,4CAAyC;AAC7D,OAAO,EAAC,YAAY,EAAC,6CAA0C;AAE/D,OAAO,EAAC,WAAW,EAAC,4CAAyC;AAC7D,OAAO,EAAC,YAAY,EAAC,6CAA0C;AAC/D,OAAO,EAAC,gBAAgB,EAAC,iDAA8C;AAEvE,OAAO,EAAC,mBAAmB,EAAC,qDAAkD;AAE9E,OAAO,EAAC,mBAAmB,EAAC,qDAAkD;AAC9E,OAAO,EAAC,eAAe,EAAC,iDAA8C;AAEtE,OAAO,EAAC,gBAAgB,EAAC,kDAA+C;AAGxE,OAAO,EAAC,sBAAsB,EAAC,wDAAqD;AAGpF,OAAO,EAAC,QAAQ,EAAC,8BAA2B;AAC5C,YAAY,EAAC,cAAc,EAAC,mBAAgB;AAI5C,OAAO,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,kDAA+C;AAGjG,OAAO,EAAC,eAAe,EAAC,+CAA4C;AACpE,OAAO,EAAC,iBAAiB,EAAC,uDAAoD;AAG9E,OAAO,EAAC,eAAe,IAAI,gBAAgB,EAAC,gDAA6C;AAGzF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,sDAAmD;AAEpD,OAAO,EAAC,gBAAgB,EAAC,mDAAgD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,YAAY,EAAC,iBAAiB,EAAC,wDAAqD;AAGpF,OAAO,EAAC,aAAa,EAAC,mCAAgC;AACtD,YAAY,EAAC,YAAY,EAAC,mCAAgC;AAG1D,OAAO,EAAC,WAAW,EAAC,kCAA+B;AACnD,OAAO,EAAC,kBAAkB,EAAC,0CAAuC;AAGlE,OAAO,EAAC,WAAW,EAAC,4CAAyC;AAC7D,OAAO,EAAC,YAAY,EAAC,6CAA0C;AAE/D,OAAO,EAAC,WAAW,EAAC,4CAAyC;AAC7D,OAAO,EAAC,YAAY,EAAC,6CAA0C;AAC/D,OAAO,EAAC,gBAAgB,EAAC,iDAA8C;AAEvE,OAAO,EAAC,mBAAmB,EAAC,qDAAkD;AAE9E,OAAO,EAAC,mBAAmB,EAAC,qDAAkD;AAC9E,OAAO,EAAC,eAAe,EAAC,iDAA8C;AAEtE,OAAO,EAAC,gBAAgB,EAAC,kDAA+C;AAGxE,OAAO,EAAC,sBAAsB,EAAC,wDAAqD;AAGpF,OAAO,EAAC,QAAQ,EAAC,iCAA8B;AAC/C,YAAY,EAAC,cAAc,EAAC,mBAAgB;AAI5C,OAAO,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,kDAA+C;AAGjG,OAAO,EAAC,uBAAuB,EAAC,+CAA4C;AAC5E,OAAO,EAAC,iBAAiB,EAAC,uDAAoD;AAG9E,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,sDAAmD;AAEpD,OAAO,EAAC,gBAAgB,EAAC,mDAAgD"}
package/dist/index.js CHANGED
@@ -22,14 +22,13 @@ export { WEBGLVertexArray } from "./adapter/resources/webgl-vertex-array.js";
22
22
  // WebGL adapter classes
23
23
  export { WEBGLTransformFeedback } from "./adapter/resources/webgl-transform-feedback.js";
24
24
  // WebGL adapter classes
25
- export { Accessor } from "./classic/accessor.js";
25
+ export { Accessor } from "./deprecated/accessor.js";
26
26
  // Unified parameter API
27
27
  export { setDeviceParameters, withDeviceParameters } from "./adapter/converters/device-parameters.js";
28
28
  // HELPERS - EXPERIMENTAL
29
- export { getShaderLayout } from "./adapter/helpers/get-shader-layout.js";
29
+ export { getShaderLayoutFromGLSL } from "./adapter/helpers/get-shader-layout.js";
30
30
  export { WebGLStateTracker } from "./context/state-tracker/webgl-state-tracker.js";
31
- // TEST EXPORTS
32
- export { TEXTURE_FORMATS as _TEXTURE_FORMATS } from "./adapter/converters/texture-formats.js";
33
31
  // DEPRECATED TEST EXPORTS
34
32
  export { resetGLParameters, setGLParameters, getGLParameters } from "./context/parameters/unified-parameter-api.js";
35
33
  export { withGLParameters } from "./context/state-tracker/with-parameters.js";
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAWpC,wBAAwB;AACxB,OAAO,EAAC,aAAa,EAAC,mCAAgC;AAGtD,uBAAuB;AACvB,OAAO,EAAC,WAAW,EAAC,kCAA+B;AACnD,OAAO,EAAC,kBAAkB,EAAC,0CAAuC;AAElE,yBAAyB;AACzB,OAAO,EAAC,WAAW,EAAC,4CAAyC;AAC7D,OAAO,EAAC,YAAY,EAAC,6CAA0C;AAC/D,mFAAmF;AACnF,OAAO,EAAC,WAAW,EAAC,4CAAyC;AAC7D,OAAO,EAAC,YAAY,EAAC,6CAA0C;AAC/D,OAAO,EAAC,gBAAgB,EAAC,iDAA8C;AAEvE,OAAO,EAAC,mBAAmB,EAAC,qDAAkD;AAC9E,mFAAmF;AACnF,OAAO,EAAC,mBAAmB,EAAC,qDAAkD;AAC9E,OAAO,EAAC,eAAe,EAAC,iDAA8C;AACtE,2EAA2E;AAC3E,OAAO,EAAC,gBAAgB,EAAC,kDAA+C;AAExE,wBAAwB;AACxB,OAAO,EAAC,sBAAsB,EAAC,wDAAqD;AAEpF,wBAAwB;AACxB,OAAO,EAAC,QAAQ,EAAC,iCAA8B;AAG/C,wBAAwB;AAExB,OAAO,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,kDAA+C;AAEjG,yBAAyB;AACzB,OAAO,EAAC,uBAAuB,EAAC,+CAA4C;AAC5E,OAAO,EAAC,iBAAiB,EAAC,uDAAoD;AAE9E,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,sDAAmD;AAEpD,OAAO,EAAC,gBAAgB,EAAC,mDAAgD"}
package/dist/types.js CHANGED
@@ -2,3 +2,4 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC"}
@@ -1,8 +1,8 @@
1
- import type { NumberArray } from '@math.gl/types';
1
+ import type { NumericArray } from '@math.gl/types';
2
2
  export declare function fillArray(options: {
3
- target: NumberArray;
4
- source: NumberArray;
3
+ target: NumericArray;
4
+ source: NumericArray;
5
5
  start?: number;
6
6
  count?: number;
7
- }): NumberArray;
7
+ }): NumericArray;
8
8
  //# sourceMappingURL=fill-array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fill-array.d.ts","sourceRoot":"","sources":["../../src/utils/fill-array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,wBAAgB,SAAS,CAAC,OAAO,EAAE;IACjC,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,WAAW,CAsBd"}
1
+ {"version":3,"file":"fill-array.d.ts","sourceRoot":"","sources":["../../src/utils/fill-array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAGjD,wBAAgB,SAAS,CAAC,OAAO,EAAE;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,YAAY,CAsBf"}
@@ -24,3 +24,4 @@ export function fillArray(options) {
24
24
  }
25
25
  return options.target;
26
26
  }
27
+ //# sourceMappingURL=fill-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fill-array.js","sourceRoot":"","sources":["../../src/utils/fill-array.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,sEAAsE;AACtE,MAAM,UAAU,SAAS,CAAC,OAKzB;IACC,MAAM,EAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAC,GAAG,OAAO,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,GAAG,KAAK,EAAE,CAAC;QACtB,2DAA2D;QAC3D,uCAAuC;QACvC,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;YAC5B,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;YACjE,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC"}
@@ -24,3 +24,4 @@ export async function loadScript(scriptUrl, scriptId) {
24
24
  head.appendChild(script);
25
25
  });
26
26
  }
27
+ //# sourceMappingURL=load-script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-script.js","sourceRoot":"","sources":["../../src/utils/load-script.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,QAAiB;IACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACtC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;QACxB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CACvB,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,SAAS,MAAM,KAAe,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { UniformValue, Binding } from '@luma.gl/core';
2
- export declare function isUniformValue(value: unknown): boolean;
2
+ export declare function isUniformValue(value: unknown): value is UniformValue;
3
3
  type UniformsAndBindings = {
4
4
  bindings: Record<string, Binding>;
5
5
  uniforms: Record<string, UniformValue>;
@@ -1 +1 @@
1
- {"version":3,"file":"split-uniforms-and-bindings.d.ts","sourceRoot":"","sources":["../../src/utils/split-uniforms-and-bindings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAGzD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACxC,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAAC,GAC/C,mBAAmB,CAYrB"}
1
+ {"version":3,"file":"split-uniforms-and-bindings.d.ts","sourceRoot":"","sources":["../../src/utils/split-uniforms-and-bindings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAGzD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAED,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACxC,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAAC,GAC/C,mBAAmB,CAYrB"}
@@ -18,3 +18,4 @@ export function splitUniformsAndBindings(uniforms) {
18
18
  });
19
19
  return result;
20
20
  }
21
+ //# sourceMappingURL=split-uniforms-and-bindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-uniforms-and-bindings.js","sourceRoot":"","sources":["../../src/utils/split-uniforms-and-bindings.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC;AACnG,CAAC;AAOD,MAAM,UAAU,wBAAwB,CACtC,QAAgD;IAEhD,MAAM,MAAM,GAAwB,EAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAC,CAAC;IACjE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/utils/uid.js CHANGED
@@ -12,3 +12,4 @@ export function uid(id = 'id') {
12
12
  const count = uidCounters[id]++;
13
13
  return `${id}-${count}`;
14
14
  }
15
+ //# sourceMappingURL=uid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uid.js","sourceRoot":"","sources":["../../src/utils/uid.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,WAAW,GAA2B,EAAE,CAAC;AAE/C;;;;IAII;AACJ,MAAM,UAAU,GAAG,CAAC,KAAa,IAAI;IACnC,WAAW,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;IAChC,OAAO,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luma.gl/webgl",
3
- "version": "9.1.0-alpha.9",
3
+ "version": "9.1.0-beta.11",
4
4
  "description": "WebGL2 adapter for the luma.gl core API",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -40,12 +40,12 @@
40
40
  "prepublishOnly": "npm run build-minified-bundle && npm run build-dev-bundle"
41
41
  },
42
42
  "peerDependencies": {
43
- "@luma.gl/core": "^9.0.0-beta"
43
+ "@luma.gl/core": "^9.1.0-alpha.1"
44
44
  },
45
45
  "dependencies": {
46
- "@luma.gl/constants": "9.1.0-alpha.9",
47
- "@math.gl/types": "^4.0.0",
46
+ "@luma.gl/constants": "9.1.0-beta.11",
47
+ "@math.gl/types": "^4.1.0",
48
48
  "@probe.gl/env": "^4.0.8"
49
49
  },
50
- "gitHead": "ff05b21269181dbb782ba7c8c1546900288ee6a1"
50
+ "gitHead": "aab3748ab83360e6ee611f9b4a2d805e5f17fb01"
51
51
  }
@@ -31,7 +31,7 @@ export function withDeviceAndGLParameters<T = unknown>(
31
31
  device: Device,
32
32
  parameters: Parameters,
33
33
  glParameters: GLParameters,
34
- func: (device?: Device) => T
34
+ func: (_?: Device) => T
35
35
  ): T {
36
36
  if (isObjectEmpty(parameters)) {
37
37
  // Avoid setting state if no parameters provided. Just call and return
@@ -62,7 +62,7 @@ export function withDeviceAndGLParameters<T = unknown>(
62
62
  export function withGLParameters<T = unknown>(
63
63
  device: Device,
64
64
  parameters: GLParameters,
65
- func: (device?: Device) => T
65
+ func: (_?: Device) => T
66
66
  ): T {
67
67
  if (isObjectEmpty(parameters)) {
68
68
  // Avoid setting state if no parameters provided. Just call and return
@@ -91,7 +91,7 @@ export function withGLParameters<T = unknown>(
91
91
  export function withDeviceParameters<T = unknown>(
92
92
  device: Device,
93
93
  parameters: Parameters,
94
- func: (device?: Device) => T
94
+ func: (_?: Device) => T
95
95
  ): T {
96
96
  if (isObjectEmpty(parameters)) {
97
97
  // Avoid setting state if no parameters provided. Just call and return
@@ -84,7 +84,7 @@ function convertMaxFilterMode(maxFilter: 'nearest' | 'linear'): GL.NEAREST | GL.
84
84
  */
85
85
  function convertMinFilterMode(
86
86
  minFilter: 'nearest' | 'linear',
87
- mipmapFilter?: 'nearest' | 'linear'
87
+ mipmapFilter: 'none' | 'nearest' | 'linear' = 'none'
88
88
  ):
89
89
  | GL.NEAREST
90
90
  | GL.LINEAR
@@ -95,10 +95,12 @@ function convertMinFilterMode(
95
95
  if (!mipmapFilter) {
96
96
  return convertMaxFilterMode(minFilter);
97
97
  }
98
- switch (minFilter) {
98
+ switch (mipmapFilter) {
99
+ case 'none':
100
+ return convertMaxFilterMode(minFilter);
99
101
  case 'nearest':
100
- return mipmapFilter === 'nearest' ? GL.NEAREST_MIPMAP_NEAREST : GL.NEAREST_MIPMAP_LINEAR;
102
+ return minFilter === 'nearest' ? GL.NEAREST_MIPMAP_NEAREST : GL.NEAREST_MIPMAP_LINEAR;
101
103
  case 'linear':
102
- return mipmapFilter === 'nearest' ? GL.LINEAR_MIPMAP_NEAREST : GL.LINEAR_MIPMAP_LINEAR;
104
+ return minFilter === 'nearest' ? GL.LINEAR_MIPMAP_NEAREST : GL.LINEAR_MIPMAP_LINEAR;
103
105
  }
104
106
  }
@@ -0,0 +1,404 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import type {
6
+ DeviceFeature,
7
+ TextureFormat,
8
+ TextureFormatCapabilities,
9
+ DeviceTextureFormatCapabilities
10
+ } from '@luma.gl/core';
11
+ import {decodeTextureFormat} from '@luma.gl/core';
12
+ import {GL, GLPixelType, GLExtensions, GLTexelDataFormat} from '@luma.gl/constants';
13
+ import {getWebGLExtension} from '../../context/helpers/webgl-extensions';
14
+ import {getGLFromVertexType} from './vertex-formats';
15
+
16
+ /* eslint-disable camelcase */
17
+
18
+ // TEXTURE FEATURES
19
+
20
+ // Define local webgl extension strings to optimize minification
21
+ const X_S3TC = 'WEBGL_compressed_texture_s3tc'; // BC1, BC2, BC3
22
+ const X_S3TC_SRGB = 'WEBGL_compressed_texture_s3tc_srgb'; // BC1, BC2, BC3
23
+ const X_RGTC = 'EXT_texture_compression_rgtc'; // BC4, BC5
24
+ const X_BPTC = 'EXT_texture_compression_bptc'; // BC6, BC7
25
+ const X_ETC2 = 'WEBGL_compressed_texture_etc'; // Renamed from 'WEBGL_compressed_texture_es3'
26
+ const X_ASTC = 'WEBGL_compressed_texture_astc';
27
+ const X_ETC1 = 'WEBGL_compressed_texture_etc1';
28
+ const X_PVRTC = 'WEBGL_compressed_texture_pvrtc';
29
+ const X_ATC = 'WEBGL_compressed_texture_atc';
30
+
31
+ // Define local webgl extension strings to optimize minification
32
+ const EXT_texture_norm16 = 'EXT_texture_norm16';
33
+ const EXT_render_snorm = 'EXT_render_snorm';
34
+ const EXT_color_buffer_float = 'EXT_color_buffer_float';
35
+
36
+ // prettier-ignore
37
+ export const TEXTURE_FEATURES: Partial<Record<DeviceFeature, string[]>> = {
38
+ 'float32-renderable-webgl': ['EXT_color_buffer_float'],
39
+ 'float16-renderable-webgl': ['EXT_color_buffer_half_float'],
40
+ 'rgb9e5ufloat-renderable-webgl': ['WEBGL_render_shared_exponent'],
41
+ 'snorm8-renderable-webgl': [EXT_render_snorm],
42
+ 'norm16-renderable-webgl': [EXT_texture_norm16],
43
+ 'snorm16-renderable-webgl': [EXT_texture_norm16, EXT_render_snorm],
44
+
45
+ 'float32-filterable': ['OES_texture_float_linear'],
46
+ 'float16-filterable-webgl': ['OES_texture_half_float_linear'],
47
+ 'texture-filterable-anisotropic-webgl': ['EXT_texture_filter_anisotropic'],
48
+
49
+ 'texture-blend-float-webgl': ['EXT_float_blend'],
50
+
51
+ 'texture-compression-bc': [X_S3TC, X_S3TC_SRGB, X_RGTC, X_BPTC],
52
+ // 'texture-compression-bc3-srgb-webgl': [X_S3TC_SRGB],
53
+ // 'texture-compression-bc3-webgl': [X_S3TC],
54
+ 'texture-compression-bc5-webgl': [X_RGTC],
55
+ 'texture-compression-bc7-webgl': [X_BPTC],
56
+ 'texture-compression-etc2': [X_ETC2],
57
+ 'texture-compression-astc': [X_ASTC],
58
+ 'texture-compression-etc1-webgl': [X_ETC1],
59
+ 'texture-compression-pvrtc-webgl': [X_PVRTC],
60
+ 'texture-compression-atc-webgl': [X_ATC]
61
+ };
62
+
63
+ export function isTextureFeature(feature: DeviceFeature): boolean {
64
+ return feature in TEXTURE_FEATURES;
65
+ }
66
+
67
+ /** Checks a texture feature (for Device.features). Mainly compressed texture support */
68
+ export function checkTextureFeature(
69
+ gl: WebGL2RenderingContext,
70
+ feature: DeviceFeature,
71
+ extensions: GLExtensions
72
+ ): boolean {
73
+ const textureExtensions = TEXTURE_FEATURES[feature] || [];
74
+ return textureExtensions.every(extension => getWebGLExtension(gl, extension, extensions));
75
+ }
76
+
77
+ // TEXTURE FORMATS
78
+
79
+ /** Map a format to webgl and constants */
80
+ type WebGLFormatInfo = {
81
+ gl?: GL;
82
+ /** compressed */
83
+ x?: string;
84
+ types?: GLPixelType[];
85
+ dataFormat?: GLTexelDataFormat;
86
+ /** if depthTexture is set this is a depth/stencil format that can be set to a texture */
87
+ depthTexture?: boolean;
88
+ /** @deprecated can this format be used with renderbuffers */
89
+ rb?: boolean;
90
+ };
91
+
92
+ // TABLES
93
+
94
+ /**
95
+ * Texture format data -
96
+ * Exported but can change without notice
97
+ */
98
+ // prettier-ignore
99
+ export const WEBGL_TEXTURE_FORMATS: Record<TextureFormat, WebGLFormatInfo> = {
100
+ // 8-bit formats
101
+ 'r8unorm': {gl: GL.R8, rb: true},
102
+ 'r8snorm': {gl: GL.R8_SNORM},
103
+ 'r8uint': {gl: GL.R8UI, rb: true},
104
+ 'r8sint': {gl: GL.R8I, rb: true},
105
+
106
+ // 16-bit formats
107
+ 'rg8unorm': {gl: GL.RG8, rb: true},
108
+ 'rg8snorm': {gl: GL.RG8_SNORM},
109
+ 'rg8uint': {gl: GL.RG8UI, rb: true},
110
+ 'rg8sint': {gl: GL.RG8I, rb: true},
111
+
112
+ 'r16uint': {gl: GL.R16UI, rb: true},
113
+ 'r16sint': {gl: GL.R16I, rb: true},
114
+ 'r16float': {gl: GL.R16F, rb: true},
115
+ 'r16unorm-webgl': {gl: GL.R16_EXT, rb: true},
116
+ 'r16snorm-webgl': {gl: GL.R16_SNORM_EXT},
117
+
118
+ // Packed 16-bit formats
119
+ 'rgba4unorm-webgl': {gl: GL.RGBA4, rb: true},
120
+ 'rgb565unorm-webgl': {gl: GL.RGB565, rb: true},
121
+ 'rgb5a1unorm-webgl': {gl: GL.RGB5_A1, rb: true},
122
+
123
+ // 24-bit formats
124
+ 'rgb8unorm-webgl': {gl: GL.RGB8},
125
+ 'rgb8snorm-webgl': {gl: GL.RGB8_SNORM},
126
+
127
+ // 32-bit formats
128
+ 'rgba8unorm': {gl: GL.RGBA8},
129
+ 'rgba8unorm-srgb': {gl: GL.SRGB8_ALPHA8},
130
+ 'rgba8snorm': {gl: GL.RGBA8_SNORM},
131
+ 'rgba8uint': {gl: GL.RGBA8UI},
132
+ 'rgba8sint': {gl: GL.RGBA8I},
133
+ // reverse colors, webgpu only
134
+ 'bgra8unorm': {},
135
+ 'bgra8unorm-srgb': {},
136
+
137
+ 'rg16uint': {gl: GL.RG16UI},
138
+ 'rg16sint': {gl: GL.RG16I},
139
+ 'rg16float': {gl: GL.RG16F, rb: true},
140
+ 'rg16unorm-webgl': {gl: GL.RG16_EXT},
141
+ 'rg16snorm-webgl': {gl: GL.RG16_SNORM_EXT},
142
+
143
+ 'r32uint': {gl: GL.R32UI, rb: true},
144
+ 'r32sint': {gl: GL.R32I, rb: true},
145
+ 'r32float': {gl: GL.R32F},
146
+
147
+ // Packed 32-bit formats
148
+ 'rgb9e5ufloat': {gl: GL.RGB9_E5}, // , filter: true},
149
+ 'rg11b10ufloat': {gl: GL.R11F_G11F_B10F, rb: true},
150
+ 'rgb10a2unorm': {gl: GL.RGB10_A2, rb: true},
151
+ 'rgb10a2uint-webgl': {gl: GL.RGB10_A2UI, rb: true},
152
+
153
+ // 48-bit formats
154
+ 'rgb16unorm-webgl': {gl: GL.RGB16_EXT}, // rgb not renderable
155
+ 'rgb16snorm-webgl': {gl: GL.RGB16_SNORM_EXT}, // rgb not renderable
156
+
157
+ // 64-bit formats
158
+ 'rg32uint': {gl: GL.RG32UI, rb: true},
159
+ 'rg32sint': {gl: GL.RG32I, rb: true},
160
+ 'rg32float': {gl: GL.RG32F, rb: true},
161
+ 'rgba16uint': {gl: GL.RGBA16UI, rb: true},
162
+ 'rgba16sint': {gl: GL.RGBA16I, rb: true},
163
+ 'rgba16float': {gl: GL.RGBA16F},
164
+ 'rgba16unorm-webgl': {gl: GL.RGBA16_EXT, rb: true},
165
+ 'rgba16snorm-webgl': {gl: GL.RGBA16_SNORM_EXT},
166
+
167
+ // 96-bit formats (deprecated!)
168
+ 'rgb32float-webgl': {gl: GL.RGB32F, x: EXT_color_buffer_float, dataFormat: GL.RGB, types: [GL.FLOAT]},
169
+
170
+ // 128-bit formats
171
+ 'rgba32uint': {gl: GL.RGBA32UI, rb: true},
172
+ 'rgba32sint': {gl: GL.RGBA32I, rb: true},
173
+ 'rgba32float': {gl: GL.RGBA32F, rb: true},
174
+
175
+ // Depth and stencil formats
176
+ 'stencil8': {gl: GL.STENCIL_INDEX8, rb: true}, // 8 stencil bits
177
+
178
+ 'depth16unorm': {gl: GL.DEPTH_COMPONENT16, dataFormat: GL.DEPTH_COMPONENT, types: [GL.UNSIGNED_SHORT], rb: true}, // 16 depth bits
179
+ 'depth24plus': {gl: GL.DEPTH_COMPONENT24, dataFormat: GL.DEPTH_COMPONENT, types: [GL.UNSIGNED_INT]},
180
+ 'depth32float': {gl: GL.DEPTH_COMPONENT32F, dataFormat: GL.DEPTH_COMPONENT, types: [GL.FLOAT], rb: true},
181
+
182
+ // The depth component of the "depth24plus" and "depth24plus-stencil8" formats may be implemented as either a 24-bit depth value or a "depth32float" value.
183
+ 'depth24plus-stencil8': {gl: GL.DEPTH24_STENCIL8, rb: true, depthTexture: true, dataFormat: GL.DEPTH_STENCIL, types: [GL.UNSIGNED_INT_24_8]},
184
+ // "depth32float-stencil8" feature - TODO below is render buffer only?
185
+ 'depth32float-stencil8': {gl: GL.DEPTH32F_STENCIL8, dataFormat: GL.DEPTH_STENCIL, types: [GL.FLOAT_32_UNSIGNED_INT_24_8_REV], rb: true},
186
+
187
+ // BC compressed formats: check device.features.has("texture-compression-bc");
188
+
189
+ 'bc1-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_S3TC_DXT1_EXT, x: X_S3TC},
190
+ 'bc1-rgb-unorm-srgb-webgl': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB},
191
+
192
+ 'bc1-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT1_EXT, x: X_S3TC},
193
+ 'bc1-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_S3TC_DXT1_EXT, x: X_S3TC_SRGB},
194
+ 'bc2-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT3_EXT, x: X_S3TC},
195
+ 'bc2-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, x: X_S3TC_SRGB},
196
+ 'bc3-rgba-unorm': {gl: GL.COMPRESSED_RGBA_S3TC_DXT5_EXT, x: X_S3TC},
197
+ 'bc3-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, x: X_S3TC_SRGB},
198
+ 'bc4-r-unorm': {gl: GL.COMPRESSED_RED_RGTC1_EXT, x: X_RGTC},
199
+ 'bc4-r-snorm': {gl: GL.COMPRESSED_SIGNED_RED_RGTC1_EXT, x: X_RGTC},
200
+ 'bc5-rg-unorm': {gl: GL.COMPRESSED_RED_GREEN_RGTC2_EXT, x: X_RGTC},
201
+ 'bc5-rg-snorm': {gl: GL.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT, x: X_RGTC},
202
+ 'bc6h-rgb-ufloat': {gl: GL.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT, x: X_BPTC},
203
+ 'bc6h-rgb-float': {gl: GL.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT, x: X_BPTC},
204
+ 'bc7-rgba-unorm': {gl: GL.COMPRESSED_RGBA_BPTC_UNORM_EXT, x: X_BPTC},
205
+ 'bc7-rgba-unorm-srgb': {gl: GL.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT, x: X_BPTC},
206
+
207
+ // WEBGL_compressed_texture_etc: device.features.has("texture-compression-etc2")
208
+ // Note: Supposedly guaranteed availability compressed formats in WebGL2, but through CPU decompression
209
+
210
+ 'etc2-rgb8unorm': {gl: GL.COMPRESSED_RGB8_ETC2},
211
+ 'etc2-rgb8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ETC2},
212
+ 'etc2-rgb8a1unorm': {gl: GL.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2},
213
+ 'etc2-rgb8a1unorm-srgb': {gl: GL.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2},
214
+ 'etc2-rgba8unorm': {gl: GL.COMPRESSED_RGBA8_ETC2_EAC},
215
+ 'etc2-rgba8unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC},
216
+
217
+ 'eac-r11unorm': {gl: GL.COMPRESSED_R11_EAC},
218
+ 'eac-r11snorm': {gl: GL.COMPRESSED_SIGNED_R11_EAC},
219
+ 'eac-rg11unorm': {gl: GL.COMPRESSED_RG11_EAC},
220
+ 'eac-rg11snorm': {gl: GL.COMPRESSED_SIGNED_RG11_EAC},
221
+
222
+ // X_ASTC compressed formats: device.features.has("texture-compression-astc")
223
+
224
+ 'astc-4x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_4x4_KHR},
225
+ 'astc-4x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR},
226
+ 'astc-5x4-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x4_KHR},
227
+ 'astc-5x4-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR},
228
+ 'astc-5x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_5x5_KHR},
229
+ 'astc-5x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR},
230
+ 'astc-6x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x5_KHR},
231
+ 'astc-6x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR},
232
+ 'astc-6x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_6x6_KHR},
233
+ 'astc-6x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR},
234
+ 'astc-8x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x5_KHR},
235
+ 'astc-8x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR},
236
+ 'astc-8x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x6_KHR},
237
+ 'astc-8x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR},
238
+ 'astc-8x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_8x8_KHR},
239
+ 'astc-8x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR},
240
+ 'astc-10x5-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR},
241
+ 'astc-10x5-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR},
242
+ 'astc-10x6-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x6_KHR},
243
+ 'astc-10x6-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR},
244
+ 'astc-10x8-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x8_KHR},
245
+ 'astc-10x8-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR},
246
+ 'astc-10x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_10x10_KHR},
247
+ 'astc-10x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR},
248
+ 'astc-12x10-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x10_KHR},
249
+ 'astc-12x10-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR},
250
+ 'astc-12x12-unorm': {gl: GL.COMPRESSED_RGBA_ASTC_12x12_KHR},
251
+ 'astc-12x12-unorm-srgb': {gl: GL.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR},
252
+
253
+ // WEBGL_compressed_texture_pvrtc
254
+
255
+ 'pvrtc-rgb4unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_4BPPV1_IMG},
256
+ 'pvrtc-rgba4unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG},
257
+ 'pvrtc-rbg2unorm-webgl': {gl: GL.COMPRESSED_RGB_PVRTC_2BPPV1_IMG},
258
+ 'pvrtc-rgba2unorm-webgl': {gl: GL.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG},
259
+
260
+ // WEBGL_compressed_texture_etc1
261
+
262
+ 'etc1-rbg-unorm-webgl': {gl: GL.COMPRESSED_RGB_ETC1_WEBGL},
263
+
264
+ // WEBGL_compressed_texture_atc
265
+
266
+ 'atc-rgb-unorm-webgl': {gl: GL.COMPRESSED_RGB_ATC_WEBGL},
267
+ 'atc-rgba-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL},
268
+ 'atc-rgbai-unorm-webgl': {gl: GL.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL}
269
+ };
270
+
271
+ // FUNCTIONS
272
+
273
+ /** Checks if a texture format is supported */
274
+ export function isWebGLTextureFormatCapabilitiesed(
275
+ gl: WebGL2RenderingContext,
276
+ format: TextureFormat,
277
+ extensions: GLExtensions
278
+ ): boolean {
279
+ const webglTextureInfo = WEBGL_TEXTURE_FORMATS[format];
280
+ // Check that we have a GL constant
281
+ if (!webglTextureInfo?.gl) {
282
+ return false;
283
+ }
284
+
285
+ // Check extensions
286
+ const extension = webglTextureInfo.x;
287
+ if (extension) {
288
+ return Boolean(getWebGLExtension(gl, extension, extensions));
289
+ }
290
+ return true;
291
+ }
292
+
293
+ /** Checks if a texture format is supported, renderable, filterable etc */
294
+ export function getTextureFormatCapabilitiesWebGL(
295
+ gl: WebGL2RenderingContext,
296
+ formatSupport: TextureFormatCapabilities,
297
+ extensions: GLExtensions
298
+ ): DeviceTextureFormatCapabilities {
299
+ let supported = formatSupport.create;
300
+ const webglFormatInfo = WEBGL_TEXTURE_FORMATS[formatSupport.format];
301
+
302
+ // Support Check that we have a GL constant
303
+ if (webglFormatInfo?.gl === undefined) {
304
+ supported = false;
305
+ }
306
+
307
+ if (webglFormatInfo?.x) {
308
+ supported = supported && Boolean(getWebGLExtension(gl, webglFormatInfo.x, extensions));
309
+ }
310
+
311
+ return {
312
+ format: formatSupport.format,
313
+ // @ts-ignore
314
+ create: supported && formatSupport.create,
315
+ // @ts-ignore
316
+ render: supported && formatSupport.render,
317
+ // @ts-ignore
318
+ filter: supported && formatSupport.filter,
319
+ // @ts-ignore
320
+ blend: supported && formatSupport.blend,
321
+ // @ts-ignore
322
+ store: supported && formatSupport.store
323
+ };
324
+ }
325
+
326
+ /** Get parameters necessary to work with format in WebGL: internalFormat, dataFormat, type, compressed, */
327
+ export function getTextureFormatWebGL(format: TextureFormat): {
328
+ internalFormat: GL;
329
+ format: GLTexelDataFormat;
330
+ type: GLPixelType;
331
+ compressed: boolean;
332
+ } {
333
+ const formatData = WEBGL_TEXTURE_FORMATS[format];
334
+ const webglFormat = convertTextureFormatToGL(format);
335
+ const decoded = decodeTextureFormat(format);
336
+ return {
337
+ internalFormat: webglFormat,
338
+ format:
339
+ formatData?.dataFormat ||
340
+ getWebGLPixelDataFormat(decoded.channels, decoded.integer, decoded.normalized, webglFormat),
341
+ // depth formats don't have a type
342
+ type: decoded.dataType
343
+ ? getGLFromVertexType(decoded.dataType)
344
+ : formatData?.types?.[0] || GL.UNSIGNED_BYTE,
345
+ compressed: decoded.compressed || false
346
+ };
347
+ }
348
+
349
+ export function getDepthStencilAttachmentWebGL(
350
+ format: TextureFormat
351
+ ): GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT {
352
+ const formatInfo = decodeTextureFormat(format);
353
+ switch (formatInfo.attachment) {
354
+ case 'depth':
355
+ return GL.DEPTH_ATTACHMENT;
356
+ case 'stencil':
357
+ return GL.STENCIL_ATTACHMENT;
358
+ case 'depth-stencil':
359
+ return GL.DEPTH_STENCIL_ATTACHMENT;
360
+ default:
361
+ throw new Error(`Not a depth stencil format: ${format}`);
362
+ }
363
+ }
364
+
365
+ /** TODO - VERY roundabout legacy way of calculating bytes per pixel */
366
+ export function getTextureFormatBytesPerPixel(format: TextureFormat): number {
367
+ const formatInfo = decodeTextureFormat(format);
368
+ return formatInfo.bytesPerPixel;
369
+ }
370
+
371
+ // DATA TYPE HELPERS
372
+
373
+ export function getWebGLPixelDataFormat(
374
+ channels: 'r' | 'rg' | 'rgb' | 'rgba' | 'bgra',
375
+ integer: boolean,
376
+ normalized: boolean,
377
+ format: GL
378
+ ): GLTexelDataFormat {
379
+ // WebGL1 formats use same internalFormat
380
+ if (format === GL.RGBA || format === GL.RGB) {
381
+ return format;
382
+ }
383
+ // prettier-ignore
384
+ switch (channels) {
385
+ case 'r': return integer && !normalized ? GL.RED_INTEGER : GL.RED;
386
+ case 'rg': return integer && !normalized ? GL.RG_INTEGER : GL.RG;
387
+ case 'rgb': return integer && !normalized ? GL.RGB_INTEGER : GL.RGB;
388
+ case 'rgba': return integer && !normalized ? GL.RGBA_INTEGER : GL.RGBA;
389
+ case 'bgra': throw new Error('bgra pixels not supported by WebGL');
390
+ default: return GL.RGBA;
391
+ }
392
+ }
393
+
394
+ /**
395
+ * Map WebGPU style texture format strings to GL constants
396
+ */
397
+ function convertTextureFormatToGL(format: TextureFormat): GL | undefined {
398
+ const formatInfo = WEBGL_TEXTURE_FORMATS[format];
399
+ const webglFormat = formatInfo?.gl;
400
+ if (webglFormat === undefined) {
401
+ throw new Error(`Unsupported texture format ${format}`);
402
+ }
403
+ return webglFormat;
404
+ }
@@ -8,8 +8,11 @@
8
8
  import {DeviceFeature, DeviceFeatures} from '@luma.gl/core';
9
9
  import {GLExtensions} from '@luma.gl/constants';
10
10
  import {getWebGLExtension} from '../../context/helpers/webgl-extensions';
11
- import {isTextureFeature, checkTextureFeature} from '../converters/texture-formats';
12
- import {TEXTURE_FEATURES} from '../converters/texture-formats';
11
+ import {
12
+ isTextureFeature,
13
+ checkTextureFeature,
14
+ TEXTURE_FEATURES
15
+ } from '../converters/webgl-texture-table';
13
16
 
14
17
  /**
15
18
  * Defines luma.gl "feature" names and semantics
@@ -10,14 +10,20 @@ export function glFormatToComponents(format) {
10
10
  case GL.ALPHA:
11
11
  case GL.R32F:
12
12
  case GL.RED:
13
+ case GL.RED_INTEGER:
13
14
  return 1;
15
+ case GL.RG32I:
16
+ case GL.RG32UI:
14
17
  case GL.RG32F:
18
+ case GL.RG_INTEGER:
15
19
  case GL.RG:
16
20
  return 2;
17
21
  case GL.RGB:
22
+ case GL.RGB_INTEGER:
18
23
  case GL.RGB32F:
19
24
  return 3;
20
25
  case GL.RGBA:
26
+ case GL.RGBA_INTEGER:
21
27
  case GL.RGBA32F:
22
28
  return 4;
23
29
  // TODO: Add support for additional WebGL2 formats