@luma.gl/webgl 9.1.9 → 9.2.0-alpha.2

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 (199) hide show
  1. package/dist/adapter/converters/device-parameters.js +14 -9
  2. package/dist/adapter/converters/device-parameters.js.map +1 -1
  3. package/dist/adapter/converters/sampler-parameters.js +13 -2
  4. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  5. package/dist/adapter/converters/shader-formats.d.ts +67 -8
  6. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/shader-formats.js +82 -52
  8. package/dist/adapter/converters/shader-formats.js.map +1 -1
  9. package/dist/adapter/converters/webgl-shadertypes.d.ts +20 -0
  10. package/dist/adapter/converters/webgl-shadertypes.d.ts.map +1 -0
  11. package/dist/adapter/converters/webgl-shadertypes.js +122 -0
  12. package/dist/adapter/converters/webgl-shadertypes.js.map +1 -0
  13. package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -1
  14. package/dist/adapter/converters/webgl-texture-table.js +17 -13
  15. package/dist/adapter/converters/webgl-texture-table.js.map +1 -1
  16. package/dist/adapter/converters/{vertex-formats.d.ts → webgl-vertex-formats.d.ts} +4 -4
  17. package/dist/adapter/converters/webgl-vertex-formats.d.ts.map +1 -0
  18. package/dist/adapter/converters/{vertex-formats.js → webgl-vertex-formats.js} +2 -3
  19. package/dist/adapter/converters/webgl-vertex-formats.js.map +1 -0
  20. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  21. package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -1
  22. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +1 -1
  23. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -1
  24. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -1
  25. package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -1
  26. package/dist/adapter/helpers/format-utils.d.ts +3 -2
  27. package/dist/adapter/helpers/format-utils.d.ts.map +1 -1
  28. package/dist/adapter/helpers/format-utils.js.map +1 -1
  29. package/dist/adapter/helpers/{get-shader-layout.d.ts → get-shader-layout-from-glsl.d.ts} +1 -1
  30. package/dist/adapter/helpers/get-shader-layout-from-glsl.d.ts.map +1 -0
  31. package/dist/adapter/helpers/{get-shader-layout.js → get-shader-layout-from-glsl.js} +12 -35
  32. package/dist/adapter/helpers/get-shader-layout-from-glsl.js.map +1 -0
  33. package/dist/adapter/helpers/set-uniform.d.ts +2 -2
  34. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  35. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  36. package/dist/adapter/helpers/webgl-texture-utils.d.ts +2 -242
  37. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
  38. package/dist/adapter/helpers/webgl-texture-utils.js +10 -99
  39. package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -1
  40. package/dist/adapter/resources/webgl-buffer.d.ts +7 -7
  41. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  42. package/dist/adapter/resources/webgl-buffer.js +29 -18
  43. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  44. package/dist/adapter/resources/webgl-command-buffer.d.ts +4 -3
  45. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  46. package/dist/adapter/resources/webgl-command-buffer.js +5 -4
  47. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  48. package/dist/adapter/resources/webgl-command-encoder.d.ts +6 -2
  49. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  50. package/dist/adapter/resources/webgl-command-encoder.js +9 -4
  51. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  52. package/dist/adapter/resources/webgl-external-texture.js +1 -0
  53. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  54. package/dist/adapter/resources/webgl-framebuffer.d.ts +2 -2
  55. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  56. package/dist/adapter/resources/webgl-framebuffer.js +2 -2
  57. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  58. package/dist/adapter/resources/webgl-query-set.d.ts +2 -2
  59. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-query-set.js +5 -1
  61. package/dist/adapter/resources/webgl-query-set.js.map +1 -1
  62. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -0
  63. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgl-render-pass.js +16 -13
  65. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  66. package/dist/adapter/resources/webgl-render-pipeline.d.ts +5 -5
  67. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgl-render-pipeline.js +28 -24
  69. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  70. package/dist/adapter/resources/webgl-sampler.js +1 -1
  71. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  72. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-shader.js +9 -2
  74. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  75. package/dist/adapter/resources/webgl-texture-view.js +1 -1
  76. package/dist/adapter/resources/webgl-texture-view.js.map +1 -1
  77. package/dist/adapter/resources/webgl-texture.d.ts +21 -66
  78. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-texture.js +152 -320
  80. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  81. package/dist/adapter/resources/webgl-transform-feedback.d.ts +1 -1
  82. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  83. package/dist/adapter/resources/webgl-transform-feedback.js +1 -1
  84. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
  85. package/dist/adapter/resources/webgl-vertex-array.d.ts +1 -1
  86. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  87. package/dist/adapter/resources/webgl-vertex-array.js +3 -2
  88. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -1
  89. package/dist/adapter/webgl-adapter.d.ts +4 -3
  90. package/dist/adapter/webgl-adapter.d.ts.map +1 -1
  91. package/dist/adapter/webgl-adapter.js +43 -30
  92. package/dist/adapter/webgl-adapter.js.map +1 -1
  93. package/dist/adapter/webgl-canvas-context.d.ts +3 -24
  94. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  95. package/dist/adapter/webgl-canvas-context.js +5 -44
  96. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  97. package/dist/adapter/webgl-device.d.ts +19 -20
  98. package/dist/adapter/webgl-device.d.ts.map +1 -1
  99. package/dist/adapter/webgl-device.js +44 -31
  100. package/dist/adapter/webgl-device.js.map +1 -1
  101. package/dist/context/debug/spector-types.d.ts.map +1 -1
  102. package/dist/context/debug/spector-types.js +3 -0
  103. package/dist/context/debug/spector-types.js.map +1 -1
  104. package/dist/context/debug/spector.js.map +1 -1
  105. package/dist/context/debug/webgl-developer-tools.js +1 -0
  106. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  107. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -1
  108. package/dist/context/helpers/webgl-extensions.js +3 -0
  109. package/dist/context/helpers/webgl-extensions.js.map +1 -1
  110. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  111. package/dist/context/parameters/unified-parameter-api.js +7 -0
  112. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  113. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  114. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  115. package/dist/context/parameters/webgl-parameter-tables.js +1 -0
  116. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  117. package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts.map +1 -1
  118. package/dist/context/polyfills/polyfill-webgl1-extensions.js +1 -0
  119. package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -1
  120. package/dist/context/state-tracker/deep-array-equal.d.ts +2 -1
  121. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  122. package/dist/context/state-tracker/deep-array-equal.js +4 -5
  123. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  124. package/dist/context/state-tracker/webgl-state-tracker.d.ts.map +1 -1
  125. package/dist/context/state-tracker/webgl-state-tracker.js +4 -1
  126. package/dist/context/state-tracker/webgl-state-tracker.js.map +1 -1
  127. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  128. package/dist/dist.dev.js +4788 -4801
  129. package/dist/dist.min.js +2 -2
  130. package/dist/index.cjs +3906 -3960
  131. package/dist/index.cjs.map +4 -4
  132. package/dist/index.d.ts +1 -3
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +1 -3
  135. package/dist/index.js.map +1 -1
  136. package/package.json +4 -4
  137. package/src/adapter/converters/device-parameters.ts +19 -9
  138. package/src/adapter/converters/sampler-parameters.ts +13 -2
  139. package/src/adapter/converters/shader-formats.ts +50 -24
  140. package/src/adapter/converters/webgl-shadertypes.ts +151 -0
  141. package/src/adapter/converters/webgl-texture-table.ts +21 -15
  142. package/src/adapter/converters/{vertex-formats.ts → webgl-vertex-formats.ts} +4 -5
  143. package/src/adapter/device-helpers/webgl-device-features.ts +1 -1
  144. package/src/adapter/device-helpers/webgl-device-limits.ts +1 -1
  145. package/src/adapter/helpers/format-utils.ts +2 -2
  146. package/src/adapter/helpers/{get-shader-layout.ts → get-shader-layout-from-glsl.ts} +20 -50
  147. package/src/adapter/helpers/set-uniform.ts +2 -2
  148. package/src/adapter/helpers/webgl-texture-utils.ts +12 -348
  149. package/src/adapter/resources/webgl-buffer.ts +43 -23
  150. package/src/adapter/resources/webgl-command-buffer.ts +9 -8
  151. package/src/adapter/resources/webgl-command-encoder.ts +18 -9
  152. package/src/adapter/resources/webgl-framebuffer.ts +4 -4
  153. package/src/adapter/resources/webgl-query-set.ts +7 -3
  154. package/src/adapter/resources/webgl-render-pass.ts +20 -17
  155. package/src/adapter/resources/webgl-render-pipeline.ts +38 -37
  156. package/src/adapter/resources/webgl-sampler.ts +1 -1
  157. package/src/adapter/resources/webgl-shader.ts +11 -2
  158. package/src/adapter/resources/webgl-texture-view.ts +1 -1
  159. package/src/adapter/resources/webgl-texture.ts +184 -394
  160. package/src/adapter/resources/webgl-transform-feedback.ts +2 -2
  161. package/src/adapter/resources/webgl-vertex-array.ts +4 -3
  162. package/src/adapter/webgl-adapter.ts +46 -33
  163. package/src/adapter/webgl-canvas-context.ts +7 -47
  164. package/src/adapter/webgl-device.ts +64 -44
  165. package/src/context/debug/spector-types.ts +5 -0
  166. package/src/context/debug/spector.ts +1 -1
  167. package/src/context/debug/webgl-developer-tools.ts +9 -3
  168. package/src/context/helpers/webgl-extensions.ts +3 -0
  169. package/src/context/parameters/unified-parameter-api.ts +9 -2
  170. package/src/context/parameters/webgl-parameter-tables.ts +2 -0
  171. package/src/context/polyfills/polyfill-webgl1-extensions.ts +1 -0
  172. package/src/context/state-tracker/deep-array-equal.ts +11 -6
  173. package/src/context/state-tracker/webgl-state-tracker.ts +5 -1
  174. package/src/context/state-tracker/with-parameters.ts +1 -1
  175. package/src/index.ts +1 -5
  176. package/dist/adapter/converters/vertex-formats.d.ts.map +0 -1
  177. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  178. package/dist/adapter/helpers/decode-webgl-types.d.ts +0 -26
  179. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +0 -1
  180. package/dist/adapter/helpers/decode-webgl-types.js +0 -102
  181. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  182. package/dist/adapter/helpers/get-shader-layout.d.ts.map +0 -1
  183. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  184. package/dist/adapter/helpers/typed-array-utils.d.ts +0 -44
  185. package/dist/adapter/helpers/typed-array-utils.d.ts.map +0 -1
  186. package/dist/adapter/helpers/typed-array-utils.js +0 -107
  187. package/dist/adapter/helpers/typed-array-utils.js.map +0 -1
  188. package/dist/deprecated/accessor.d.ts +0 -53
  189. package/dist/deprecated/accessor.d.ts.map +0 -1
  190. package/dist/deprecated/accessor.js +0 -177
  191. package/dist/deprecated/accessor.js.map +0 -1
  192. package/dist/utils/split-uniforms-and-bindings.d.ts +0 -9
  193. package/dist/utils/split-uniforms-and-bindings.d.ts.map +0 -1
  194. package/dist/utils/split-uniforms-and-bindings.js +0 -21
  195. package/dist/utils/split-uniforms-and-bindings.js.map +0 -1
  196. package/src/adapter/helpers/decode-webgl-types.ts +0 -134
  197. package/src/adapter/helpers/typed-array-utils.ts +0 -129
  198. package/src/deprecated/accessor.ts +0 -225
  199. package/src/utils/split-uniforms-and-bindings.ts +0 -31
package/dist/index.d.ts CHANGED
@@ -13,10 +13,8 @@ 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 "./deprecated/accessor.js";
17
- export type { AccessorObject } from "./types.js";
18
16
  export { setDeviceParameters, withDeviceParameters } from "./adapter/converters/device-parameters.js";
19
- export { getShaderLayoutFromGLSL } from "./adapter/helpers/get-shader-layout.js";
17
+ export { getShaderLayoutFromGLSL } from "./adapter/helpers/get-shader-layout-from-glsl.js";
20
18
  export { WebGLStateTracker } from "./context/state-tracker/webgl-state-tracker.js";
21
19
  export { resetGLParameters, setGLParameters, getGLParameters } from "./context/parameters/unified-parameter-api.js";
22
20
  export { withGLParameters } from "./context/state-tracker/with-parameters.js";
@@ -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,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"}
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;AAIpF,OAAO,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,kDAA+C;AAGjG,OAAO,EAAC,uBAAuB,EAAC,yDAAsD;AACtF,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
@@ -21,12 +21,10 @@ export { WEBGLRenderPass } from "./adapter/resources/webgl-render-pass.js";
21
21
  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
- // WebGL adapter classes
25
- export { Accessor } from "./deprecated/accessor.js";
26
24
  // Unified parameter API
27
25
  export { setDeviceParameters, withDeviceParameters } from "./adapter/converters/device-parameters.js";
28
26
  // HELPERS - EXPERIMENTAL
29
- export { getShaderLayoutFromGLSL } from "./adapter/helpers/get-shader-layout.js";
27
+ export { getShaderLayoutFromGLSL } from "./adapter/helpers/get-shader-layout-from-glsl.js";
30
28
  export { WebGLStateTracker } from "./context/state-tracker/webgl-state-tracker.js";
31
29
  // DEPRECATED TEST EXPORTS
32
30
  export { resetGLParameters, setGLParameters, getGLParameters } from "./context/parameters/unified-parameter-api.js";
package/dist/index.js.map CHANGED
@@ -1 +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"}
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;AAExB,OAAO,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,kDAA+C;AAEjG,yBAAyB;AACzB,OAAO,EAAC,uBAAuB,EAAC,yDAAsD;AACtF,OAAO,EAAC,iBAAiB,EAAC,uDAAoD;AAE9E,0BAA0B;AAC1B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,sDAAmD;AAEpD,OAAO,EAAC,gBAAgB,EAAC,mDAAgD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luma.gl/webgl",
3
- "version": "9.1.9",
3
+ "version": "9.2.0-alpha.2",
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.1.0"
43
+ "@luma.gl/core": "9.2.0-alpha.1"
44
44
  },
45
45
  "dependencies": {
46
- "@luma.gl/constants": "9.1.9",
46
+ "@luma.gl/constants": "9.2.0-alpha.2",
47
47
  "@math.gl/types": "^4.1.0",
48
48
  "@probe.gl/env": "^4.0.8"
49
49
  },
50
- "gitHead": "2d0d93f337120d670e03bd2d5141d90d0d582b44"
50
+ "gitHead": "dc1e71675ea19a4afbb59d3b9dcd3b01deea3cae"
51
51
  }
@@ -395,23 +395,33 @@ function convertBlendOperationToEquation(
395
395
  });
396
396
  }
397
397
 
398
- function convertBlendFactorToFunction(parameter: string, value: BlendFactor): GLBlendFunction {
398
+ function convertBlendFactorToFunction(
399
+ parameter: string,
400
+ value: BlendFactor,
401
+ type: 'color' | 'alpha' = 'color'
402
+ ): GLBlendFunction {
399
403
  return map<BlendFactor, GLBlendFunction>(parameter, value, {
400
404
  one: GL.ONE,
401
405
  zero: GL.ZERO,
402
- 'src-color': GL.SRC_COLOR,
403
- 'one-minus-src-color': GL.ONE_MINUS_SRC_COLOR,
404
- 'dst-color': GL.DST_COLOR,
405
- 'one-minus-dst-color': GL.ONE_MINUS_DST_COLOR,
406
+ src: GL.SRC_COLOR,
407
+ 'one-minus-src': GL.ONE_MINUS_SRC_COLOR,
408
+ dst: GL.DST_COLOR,
409
+ 'one-minus-dst': GL.ONE_MINUS_DST_COLOR,
406
410
  'src-alpha': GL.SRC_ALPHA,
407
411
  'one-minus-src-alpha': GL.ONE_MINUS_SRC_ALPHA,
408
412
  'dst-alpha': GL.DST_ALPHA,
409
413
  'one-minus-dst-alpha': GL.ONE_MINUS_DST_ALPHA,
410
414
  'src-alpha-saturated': GL.SRC_ALPHA_SATURATE,
411
- 'constant-color': GL.CONSTANT_COLOR,
412
- 'one-minus-constant-color': GL.ONE_MINUS_CONSTANT_COLOR,
413
- 'constant-alpha': GL.CONSTANT_ALPHA,
414
- 'one-minus-constant-alpha': GL.ONE_MINUS_CONSTANT_ALPHA
415
+ constant: type === 'color' ? GL.CONSTANT_COLOR : GL.CONSTANT_ALPHA,
416
+ 'one-minus-constant':
417
+ type === 'color' ? GL.ONE_MINUS_CONSTANT_COLOR : GL.ONE_MINUS_CONSTANT_ALPHA,
418
+ // 'constant-alpha': GL.CONSTANT_ALPHA,
419
+ // 'one-minus-constant-alpha': GL.ONE_MINUS_CONSTANT_ALPHA,
420
+ // TODO not supported in WebGL2
421
+ src1: GL.SRC_COLOR,
422
+ 'one-minus-src1': GL.ONE_MINUS_SRC_COLOR,
423
+ 'src1-alpha': GL.SRC_ALPHA,
424
+ 'one-minus-src1-alpha': GL.ONE_MINUS_SRC_ALPHA
415
425
  });
416
426
  }
417
427
 
@@ -99,8 +99,19 @@ function convertMinFilterMode(
99
99
  case 'none':
100
100
  return convertMaxFilterMode(minFilter);
101
101
  case 'nearest':
102
- return minFilter === 'nearest' ? GL.NEAREST_MIPMAP_NEAREST : GL.NEAREST_MIPMAP_LINEAR;
102
+ switch (minFilter) {
103
+ case 'nearest':
104
+ return GL.NEAREST_MIPMAP_NEAREST;
105
+ case 'linear':
106
+ return GL.LINEAR_MIPMAP_NEAREST;
107
+ }
108
+ break;
103
109
  case 'linear':
104
- return minFilter === 'nearest' ? GL.LINEAR_MIPMAP_NEAREST : GL.LINEAR_MIPMAP_LINEAR;
110
+ switch (minFilter) {
111
+ case 'nearest':
112
+ return GL.NEAREST_MIPMAP_LINEAR;
113
+ case 'linear':
114
+ return GL.LINEAR_MIPMAP_LINEAR;
115
+ }
105
116
  }
106
117
  }
@@ -2,31 +2,35 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {GL} from '@luma.gl/constants';
6
- import {ShaderAttributeType, ShaderDataType} from '@luma.gl/core';
5
+ import {GL, GLDataType, GLPixelType} from '@luma.gl/constants';
6
+ import {SignedDataType} from '@luma.gl/core';
7
7
 
8
- /** Get shader attribute type from GL constants */
9
- export function getShaderAttributeTypeFromGL(
10
- type: GL,
11
- components: 1 | 2 | 3 | 4
12
- ): ShaderAttributeType {
13
- const dataType = getShaderDataTypeFromGL(type);
14
- switch (components) {
15
- case 1:
16
- return dataType;
17
- case 2:
18
- return `vec2<${dataType}>`;
19
- case 3:
20
- return `vec2<${dataType}>`;
21
- case 4:
22
- return `vec2<${dataType}>`;
23
- default:
24
- throw new Error(String(components));
25
- }
8
+ /** Get shadertypes data type from GL constants */
9
+ export function convertGLDataTypeToDataType(type: GLDataType | GLPixelType): SignedDataType {
10
+ return GL_DATA_TYPE_MAP[type];
26
11
  }
27
12
 
28
- /** Get shader data type from GL constants */
29
- export function getShaderDataTypeFromGL(type: GL): ShaderDataType {
13
+ const GL_DATA_TYPE_MAP: Record<GLDataType | GLPixelType, SignedDataType> = {
14
+ [GL.INT]: 'sint32',
15
+ [GL.UNSIGNED_INT]: 'uint32',
16
+ [GL.SHORT]: 'sint16',
17
+ [GL.UNSIGNED_SHORT]: 'uint16',
18
+ [GL.BYTE]: 'sint8',
19
+ [GL.UNSIGNED_BYTE]: 'uint8',
20
+ [GL.FLOAT]: 'float32',
21
+ [GL.HALF_FLOAT]: 'float16',
22
+ [GL.UNSIGNED_SHORT_5_6_5]: 'uint16',
23
+ [GL.UNSIGNED_SHORT_4_4_4_4]: 'uint16',
24
+ [GL.UNSIGNED_SHORT_5_5_5_1]: 'uint16',
25
+ [GL.UNSIGNED_INT_2_10_10_10_REV]: 'uint32',
26
+ [GL.UNSIGNED_INT_10F_11F_11F_REV]: 'uint32',
27
+ [GL.UNSIGNED_INT_5_9_9_9_REV]: 'uint32',
28
+ [GL.UNSIGNED_INT_24_8]: 'uint32',
29
+ [GL.FLOAT_32_UNSIGNED_INT_24_8_REV]: 'uint32'
30
+ };
31
+
32
+ /** Get shader data type from GL constants *
33
+ export function getPrimitiveTypeFromGL(type: GL): PrimitiveDataType {
30
34
  switch (type) {
31
35
  case GL.INT:
32
36
  return 'i32';
@@ -49,9 +53,30 @@ export function getShaderDataTypeFromGL(type: GL): ShaderDataType {
49
53
  }
50
54
  }
51
55
 
52
- /** GetGL constant from shader data type */
56
+ /** Get shader attribute type from GL constants *
57
+ export function getShaderAttributeTypeFromGL(
58
+ type: GL,
59
+ components: 1 | 2 | 3 | 4
60
+ ): AttributeShaderType {
61
+ const dataType = getPrimitiveTypeFromGL(type);
62
+ switch (components) {
63
+ case 1:
64
+ return dataType;
65
+ case 2:
66
+ return `vec2<${dataType}>`;
67
+ case 3:
68
+ return `vec2<${dataType}>`;
69
+ case 4:
70
+ return `vec2<${dataType}>`;
71
+ default:
72
+ throw new Error(String(components));
73
+ }
74
+ }
75
+ */
76
+
77
+ /** GetGL constant from shader data type
53
78
  export function getGLFromShaderDataType(
54
- type: ShaderDataType
79
+ type: PrimitiveDataType
55
80
  ): GL.INT | GL.UNSIGNED_INT | GL.FLOAT | GL.HALF_FLOAT {
56
81
  switch (type) {
57
82
  // TODO
@@ -67,3 +92,4 @@ export function getGLFromShaderDataType(
67
92
  throw new Error(String(type));
68
93
  }
69
94
  }
95
+ */
@@ -0,0 +1,151 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {VariableShaderType, SignedDataType, VertexFormat, NormalizedDataType} from '@luma.gl/core';
6
+ import {GL, GLUniformType, GLSamplerType, GLDataType} from '@luma.gl/constants';
7
+
8
+ export type TextureBindingInfo = {
9
+ viewDimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
10
+ sampleType: 'float' | 'unfilterable-float' | 'depth' | 'sint' | 'uint';
11
+ };
12
+
13
+ /** Converts to a luma shadertype to a GL data type (GL.BYTE, GL.FLOAT32 etc) */
14
+ export function convertDataTypeToGLDataType(normalizedType: NormalizedDataType): GLDataType {
15
+ return NORMALIZED_SHADER_TYPE_TO_WEBGL[normalizedType];
16
+ }
17
+
18
+ /** Converts to a luma shadertype to a GL data type (GL.BYTE, GL.FLOAT32 etc) */
19
+ export function convertShaderVariableTypeToGLDataType(
20
+ normalizedType: VariableShaderType
21
+ ): GLDataType {
22
+ // @ts-ignore TODO
23
+ return NORMALIZED_SHADER_TYPE_TO_WEBGL[normalizedType];
24
+ }
25
+
26
+ /** Convert a WebGL "compisite type (e.g. GL.VEC3) into the corresponding luma shader uniform type */
27
+ export function convertGLUniformTypeToShaderVariableType(
28
+ glUniformType: GLUniformType
29
+ ): VariableShaderType {
30
+ return WEBGL_SHADER_TYPES[glUniformType];
31
+ }
32
+
33
+ /** Check if a WebGL "uniform:" is a texture binding */
34
+ export function isGLSamplerType(type: GLUniformType | GLSamplerType): type is GLSamplerType {
35
+ // @ts-ignore TODO
36
+ return Boolean(WEBGL_SAMPLER_TO_TEXTURE_BINDINGS[type]);
37
+ }
38
+
39
+ /* Get luma texture binding info (viewDimension and sampleType) from a WebGL "sampler" binding */
40
+ export function getTextureBindingFromGLSamplerType(
41
+ glSamplerType: GLSamplerType
42
+ ): TextureBindingInfo {
43
+ return WEBGL_SAMPLER_TO_TEXTURE_BINDINGS[glSamplerType];
44
+ }
45
+
46
+ /** Get vertex format from GL constants */
47
+ export function getVertexFormatFromGL(type: GLDataType, components: 1 | 2 | 3 | 4): VertexFormat {
48
+ const base = getVertexTypeFromGL(type);
49
+ // prettier-ignore
50
+ switch (components) {
51
+ case 1: return base;
52
+ case 2: return `${base}x2`;
53
+ // @ts-expect-error - deal with lack of "unaligned" formats
54
+ case 3: return `${base}x3`;
55
+ case 4: return `${base}x4`;
56
+ }
57
+ // @ts-ignore unreachable
58
+ throw new Error(String(components));
59
+ }
60
+
61
+ /** Get data type from GL constants */
62
+ export function getVertexTypeFromGL(glType: GLDataType, normalized = false): NormalizedDataType {
63
+ const index = normalized ? 1 : 0;
64
+ return WEBGL_TO_NORMALIZED_DATA_TYPE[glType][index];
65
+ }
66
+
67
+ // Composite types table
68
+ // @ts-ignore TODO - fix the type confusion here
69
+ const WEBGL_SHADER_TYPES: Record<GLUniformType, VariableShaderType> = {
70
+ [GL.FLOAT]: 'f32',
71
+ [GL.FLOAT_VEC2]: 'vec2<f32>',
72
+ [GL.FLOAT_VEC3]: 'vec3<f32>',
73
+ [GL.FLOAT_VEC4]: 'vec4<f32>',
74
+
75
+ [GL.INT]: 'i32',
76
+ [GL.INT_VEC2]: 'vec2<i32>',
77
+ [GL.INT_VEC3]: 'vec3<i32>',
78
+ [GL.INT_VEC4]: 'vec4<i32>',
79
+
80
+ [GL.UNSIGNED_INT]: 'u32',
81
+ [GL.UNSIGNED_INT_VEC2]: 'vec2<u32>',
82
+ [GL.UNSIGNED_INT_VEC3]: 'vec3<u32>',
83
+ [GL.UNSIGNED_INT_VEC4]: 'vec4<u32>',
84
+
85
+ [GL.BOOL]: 'f32',
86
+ [GL.BOOL_VEC2]: 'vec2<f32>',
87
+ [GL.BOOL_VEC3]: 'vec3<f32>',
88
+ [GL.BOOL_VEC4]: 'vec4<f32>',
89
+
90
+ // TODO - are sizes/components below correct?
91
+ [GL.FLOAT_MAT2]: 'mat2x2<f32>',
92
+ [GL.FLOAT_MAT2x3]: 'mat2x3<f32>',
93
+ [GL.FLOAT_MAT2x4]: 'mat2x4<f32>',
94
+
95
+ [GL.FLOAT_MAT3x2]: 'mat3x2<f32>',
96
+ [GL.FLOAT_MAT3]: 'mat3x3<f32>',
97
+ [GL.FLOAT_MAT3x4]: 'mat3x4<f32>',
98
+
99
+ [GL.FLOAT_MAT4x2]: 'mat4x2<f32>',
100
+ [GL.FLOAT_MAT4x3]: 'mat4x3<f32>',
101
+ [GL.FLOAT_MAT4]: 'mat4x4<f32>'
102
+ };
103
+
104
+ const WEBGL_SAMPLER_TO_TEXTURE_BINDINGS: Record<GLSamplerType, TextureBindingInfo> = {
105
+ [GL.SAMPLER_2D]: {viewDimension: '2d', sampleType: 'float'},
106
+ [GL.SAMPLER_CUBE]: {viewDimension: 'cube', sampleType: 'float'},
107
+ [GL.SAMPLER_3D]: {viewDimension: '3d', sampleType: 'float'},
108
+ [GL.SAMPLER_2D_SHADOW]: {viewDimension: '3d', sampleType: 'depth'},
109
+ [GL.SAMPLER_2D_ARRAY]: {viewDimension: '2d-array', sampleType: 'float'},
110
+ [GL.SAMPLER_2D_ARRAY_SHADOW]: {viewDimension: '2d-array', sampleType: 'depth'},
111
+ [GL.SAMPLER_CUBE_SHADOW]: {viewDimension: 'cube', sampleType: 'float'},
112
+ [GL.INT_SAMPLER_2D]: {viewDimension: '2d', sampleType: 'sint'},
113
+ [GL.INT_SAMPLER_3D]: {viewDimension: '3d', sampleType: 'sint'},
114
+ [GL.INT_SAMPLER_CUBE]: {viewDimension: 'cube', sampleType: 'sint'},
115
+ [GL.INT_SAMPLER_2D_ARRAY]: {viewDimension: '2d-array', sampleType: 'uint'},
116
+ [GL.UNSIGNED_INT_SAMPLER_2D]: {viewDimension: '2d', sampleType: 'uint'},
117
+ [GL.UNSIGNED_INT_SAMPLER_3D]: {viewDimension: '3d', sampleType: 'uint'},
118
+ [GL.UNSIGNED_INT_SAMPLER_CUBE]: {viewDimension: 'cube', sampleType: 'uint'},
119
+ [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: {viewDimension: '2d-array', sampleType: 'uint'}
120
+ };
121
+
122
+ /** Map from WebGL normalized types to WebGL */
123
+ const NORMALIZED_SHADER_TYPE_TO_WEBGL: Record<NormalizedDataType, GLDataType> = {
124
+ uint8: GL.UNSIGNED_BYTE,
125
+ sint8: GL.BYTE,
126
+ unorm8: GL.UNSIGNED_BYTE,
127
+ snorm8: GL.BYTE,
128
+ uint16: GL.UNSIGNED_SHORT,
129
+ sint16: GL.SHORT,
130
+ unorm16: GL.UNSIGNED_SHORT,
131
+ snorm16: GL.SHORT,
132
+ uint32: GL.UNSIGNED_INT,
133
+ sint32: GL.INT,
134
+ // WebGPU does not support normalized 32 bit integer attributes
135
+ // 'unorm32': GL.UNSIGNED_INT,
136
+ // 'snorm32': GL.INT,
137
+ float16: GL.HALF_FLOAT,
138
+ float32: GL.FLOAT
139
+ };
140
+
141
+ /* Map from WebGL types to webgpu normalized types */
142
+ const WEBGL_TO_NORMALIZED_DATA_TYPE: Record<GLDataType, [SignedDataType, NormalizedDataType]> = {
143
+ [GL.BYTE]: ['sint8', 'snorm16'],
144
+ [GL.UNSIGNED_BYTE]: ['uint8', 'unorm8'],
145
+ [GL.SHORT]: ['sint16', 'unorm16'],
146
+ [GL.UNSIGNED_SHORT]: ['uint16', 'unorm16'],
147
+ [GL.INT]: ['sint32', 'sint32'],
148
+ [GL.UNSIGNED_INT]: ['uint32', 'uint32'],
149
+ [GL.FLOAT]: ['float32', 'float32'],
150
+ [GL.HALF_FLOAT]: ['float16', 'float16']
151
+ };
@@ -8,10 +8,10 @@ import type {
8
8
  TextureFormatCapabilities,
9
9
  DeviceTextureFormatCapabilities
10
10
  } from '@luma.gl/core';
11
- import {decodeTextureFormat} from '@luma.gl/core';
11
+ import {textureFormatDecoder} from '@luma.gl/core';
12
12
  import {GL, GLPixelType, GLExtensions, GLTexelDataFormat} from '@luma.gl/constants';
13
13
  import {getWebGLExtension} from '../../context/helpers/webgl-extensions';
14
- import {getGLFromVertexType} from './vertex-formats';
14
+ import {getGLFromVertexType} from './webgl-vertex-formats';
15
15
 
16
16
  /* eslint-disable camelcase */
17
17
 
@@ -112,8 +112,8 @@ export const WEBGL_TEXTURE_FORMATS: Record<TextureFormat, WebGLFormatInfo> = {
112
112
  'r16uint': {gl: GL.R16UI, rb: true},
113
113
  'r16sint': {gl: GL.R16I, rb: true},
114
114
  'r16float': {gl: GL.R16F, rb: true},
115
- 'r16unorm-webgl': {gl: GL.R16_EXT, rb: true},
116
- 'r16snorm-webgl': {gl: GL.R16_SNORM_EXT},
115
+ 'r16unorm': {gl: GL.R16_EXT, rb: true},
116
+ 'r16snorm': {gl: GL.R16_SNORM_EXT},
117
117
 
118
118
  // Packed 16-bit formats
119
119
  'rgba4unorm-webgl': {gl: GL.RGBA4, rb: true},
@@ -124,7 +124,7 @@ export const WEBGL_TEXTURE_FORMATS: Record<TextureFormat, WebGLFormatInfo> = {
124
124
  'rgb8unorm-webgl': {gl: GL.RGB8},
125
125
  'rgb8snorm-webgl': {gl: GL.RGB8_SNORM},
126
126
 
127
- // 32-bit formats
127
+ // 32-bit formats
128
128
  'rgba8unorm': {gl: GL.RGBA8},
129
129
  'rgba8unorm-srgb': {gl: GL.SRGB8_ALPHA8},
130
130
  'rgba8snorm': {gl: GL.RGBA8_SNORM},
@@ -137,8 +137,8 @@ export const WEBGL_TEXTURE_FORMATS: Record<TextureFormat, WebGLFormatInfo> = {
137
137
  'rg16uint': {gl: GL.RG16UI},
138
138
  'rg16sint': {gl: GL.RG16I},
139
139
  'rg16float': {gl: GL.RG16F, rb: true},
140
- 'rg16unorm-webgl': {gl: GL.RG16_EXT},
141
- 'rg16snorm-webgl': {gl: GL.RG16_SNORM_EXT},
140
+ 'rg16unorm': {gl: GL.RG16_EXT},
141
+ 'rg16snorm': {gl: GL.RG16_SNORM_EXT},
142
142
 
143
143
  'r32uint': {gl: GL.R32UI, rb: true},
144
144
  'r32sint': {gl: GL.R32I, rb: true},
@@ -148,7 +148,7 @@ export const WEBGL_TEXTURE_FORMATS: Record<TextureFormat, WebGLFormatInfo> = {
148
148
  'rgb9e5ufloat': {gl: GL.RGB9_E5}, // , filter: true},
149
149
  'rg11b10ufloat': {gl: GL.R11F_G11F_B10F, rb: true},
150
150
  'rgb10a2unorm': {gl: GL.RGB10_A2, rb: true},
151
- 'rgb10a2uint-webgl': {gl: GL.RGB10_A2UI, rb: true},
151
+ 'rgb10a2uint': {gl: GL.RGB10_A2UI, rb: true},
152
152
 
153
153
  // 48-bit formats
154
154
  'rgb16unorm-webgl': {gl: GL.RGB16_EXT}, // rgb not renderable
@@ -161,12 +161,12 @@ export const WEBGL_TEXTURE_FORMATS: Record<TextureFormat, WebGLFormatInfo> = {
161
161
  'rgba16uint': {gl: GL.RGBA16UI, rb: true},
162
162
  'rgba16sint': {gl: GL.RGBA16I, rb: true},
163
163
  'rgba16float': {gl: GL.RGBA16F},
164
- 'rgba16unorm-webgl': {gl: GL.RGBA16_EXT, rb: true},
165
- 'rgba16snorm-webgl': {gl: GL.RGBA16_SNORM_EXT},
164
+ 'rgba16unorm': {gl: GL.RGBA16_EXT, rb: true},
165
+ 'rgba16snorm': {gl: GL.RGBA16_SNORM_EXT},
166
166
 
167
167
  // 96-bit formats (deprecated!)
168
168
  'rgb32float-webgl': {gl: GL.RGB32F, x: EXT_color_buffer_float, dataFormat: GL.RGB, types: [GL.FLOAT]},
169
-
169
+
170
170
  // 128-bit formats
171
171
  'rgba32uint': {gl: GL.RGBA32UI, rb: true},
172
172
  'rgba32sint': {gl: GL.RGBA32I, rb: true},
@@ -332,7 +332,13 @@ export function getTextureFormatWebGL(format: TextureFormat): {
332
332
  } {
333
333
  const formatData = WEBGL_TEXTURE_FORMATS[format];
334
334
  const webglFormat = convertTextureFormatToGL(format);
335
- const decoded = decodeTextureFormat(format);
335
+ const decoded = textureFormatDecoder.getInfo(format);
336
+
337
+ if (decoded.compressed) {
338
+ // TODO: Unclear whether this is always valid, this may be why ETC2 RGBA8 fails.
339
+ formatData.dataFormat = webglFormat as GLTexelDataFormat;
340
+ }
341
+
336
342
  return {
337
343
  internalFormat: webglFormat,
338
344
  format:
@@ -349,7 +355,7 @@ export function getTextureFormatWebGL(format: TextureFormat): {
349
355
  export function getDepthStencilAttachmentWebGL(
350
356
  format: TextureFormat
351
357
  ): GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT {
352
- const formatInfo = decodeTextureFormat(format);
358
+ const formatInfo = textureFormatDecoder.getInfo(format);
353
359
  switch (formatInfo.attachment) {
354
360
  case 'depth':
355
361
  return GL.DEPTH_ATTACHMENT;
@@ -364,7 +370,7 @@ export function getDepthStencilAttachmentWebGL(
364
370
 
365
371
  /** TODO - VERY roundabout legacy way of calculating bytes per pixel */
366
372
  export function getTextureFormatBytesPerPixel(format: TextureFormat): number {
367
- const formatInfo = decodeTextureFormat(format);
373
+ const formatInfo = textureFormatDecoder.getInfo(format);
368
374
  return formatInfo.bytesPerPixel;
369
375
  }
370
376
 
@@ -394,7 +400,7 @@ export function getWebGLPixelDataFormat(
394
400
  /**
395
401
  * Map WebGPU style texture format strings to GL constants
396
402
  */
397
- function convertTextureFormatToGL(format: TextureFormat): GL | undefined {
403
+ function convertTextureFormatToGL(format: TextureFormat): GL {
398
404
  const formatInfo = WEBGL_TEXTURE_FORMATS[format];
399
405
  const webglFormat = formatInfo?.gl;
400
406
  if (webglFormat === undefined) {
@@ -3,7 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import {GL} from '@luma.gl/constants';
6
- import {VertexFormat, VertexType} from '@luma.gl/core';
6
+ import {VertexFormat, NormalizedDataType} from '@luma.gl/core';
7
7
 
8
8
  type GLDataType =
9
9
  | GL.UNSIGNED_BYTE
@@ -20,10 +20,9 @@ export function getVertexFormatFromGL(type: GLDataType, components: 1 | 2 | 3 |
20
20
  const base = getVertexTypeFromGL(type);
21
21
  // prettier-ignore
22
22
  switch (components) {
23
- // @ts-expect-error TODO deal with lack of formats
24
23
  case 1: return base;
25
24
  case 2: return `${base}x2`;
26
- // @ts-expect-error TODO deal with lack of formats
25
+ // @ts-expect-error TODO deal with lack of "unaligned" formats
27
26
  case 3: return `${base}x3`;
28
27
  case 4: return `${base}x4`;
29
28
  }
@@ -32,7 +31,7 @@ export function getVertexFormatFromGL(type: GLDataType, components: 1 | 2 | 3 |
32
31
  }
33
32
 
34
33
  /** Get data type from GL constants */
35
- export function getVertexTypeFromGL(type: GLDataType, normalized = false): VertexType {
34
+ export function getVertexTypeFromGL(type: GLDataType, normalized = false): NormalizedDataType {
36
35
  // prettier-ignore
37
36
  switch (type) {
38
37
  // WebGPU does not support normalized 32 bit integer attributes
@@ -50,7 +49,7 @@ export function getVertexTypeFromGL(type: GLDataType, normalized = false): Verte
50
49
  }
51
50
 
52
51
  export function getGLFromVertexType(
53
- dataType: VertexType
52
+ dataType: NormalizedDataType
54
53
  ):
55
54
  | GL.UNSIGNED_BYTE
56
55
  | GL.BYTE
@@ -62,7 +62,7 @@ export class WebGLDeviceFeatures extends DeviceFeatures {
62
62
  getWebGLExtension(gl, 'EXT_color_buffer_float', extensions);
63
63
  }
64
64
 
65
- *[Symbol.iterator](): IterableIterator<DeviceFeature> {
65
+ override *[Symbol.iterator](): IterableIterator<DeviceFeature> {
66
66
  const features = this.getFeatures();
67
67
  for (const feature of features) {
68
68
  if (this.has(feature)) {
@@ -26,7 +26,7 @@ export class WebGLDeviceLimits extends DeviceLimits {
26
26
  get maxVertexBuffers() { return 16; } // WebGL 2 supports 16 buffers, see https://github.com/gpuweb/gpuweb/issues/4284
27
27
  get maxVertexAttributes() { return this.getParameter(GL.MAX_VERTEX_ATTRIBS); }
28
28
  get maxVertexBufferArrayStride() { return 2048; } // TBD, this is just the default value from WebGPU
29
- get maxInterStageShaderComponents() { return this.getParameter(GL.MAX_VARYING_COMPONENTS); }
29
+ get maxInterStageShaderVariables() { return this.getParameter(GL.MAX_VARYING_COMPONENTS); }
30
30
  get maxComputeWorkgroupStorageSize() { return 0; } // WebGL does not support compute shaders
31
31
  get maxComputeInvocationsPerWorkgroup() { return 0; } // WebGL does not support compute shaders
32
32
  get maxComputeWorkgroupSizeX() { return 0; } // WebGL does not support compute shaders
@@ -5,7 +5,7 @@
5
5
  import {GL} from '@luma.gl/constants';
6
6
 
7
7
  // Returns number of components in a specific readPixels WebGL format
8
- export function glFormatToComponents(format) {
8
+ export function glFormatToComponents(format: GL): 0 | 1 | 2 | 3 | 4 {
9
9
  switch (format) {
10
10
  case GL.ALPHA:
11
11
  case GL.R32F:
@@ -33,7 +33,7 @@ export function glFormatToComponents(format) {
33
33
  }
34
34
 
35
35
  // Return byte count for given readPixels WebGL type
36
- export function glTypeToBytes(type) {
36
+ export function glTypeToBytes(type: GL): 0 | 1 | 2 | 4 {
37
37
  switch (type) {
38
38
  case GL.UNSIGNED_BYTE:
39
39
  return 1;