@luma.gl/webgl 9.0.0-beta.4 → 9.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +297 -155
  3. package/dist/adapter/converters/sampler-parameters.d.ts +0 -4
  4. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.js +73 -67
  6. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  7. package/dist/adapter/converters/shader-formats.js +53 -46
  8. package/dist/adapter/converters/texture-formats.d.ts +13 -19
  9. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  10. package/dist/adapter/converters/texture-formats.js +474 -879
  11. package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
  12. package/dist/adapter/converters/vertex-formats.js +53 -61
  13. package/dist/adapter/device-helpers/device-features.d.ts +2 -5
  14. package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
  15. package/dist/adapter/device-helpers/device-features.js +56 -87
  16. package/dist/adapter/device-helpers/device-limits.d.ts +2 -4
  17. package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
  18. package/dist/adapter/device-helpers/device-limits.js +88 -83
  19. package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
  20. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  21. package/dist/adapter/device-helpers/get-device-info.js +79 -63
  22. package/dist/adapter/device-helpers/webgl-device-features.d.ts +19 -0
  23. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
  24. package/dist/adapter/device-helpers/webgl-device-features.js +86 -0
  25. package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
  26. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
  27. package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
  28. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
  29. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
  30. package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
  31. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
  32. package/dist/adapter/helpers/decode-webgl-types.js +88 -76
  33. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  34. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  35. package/dist/adapter/helpers/get-shader-layout.js +261 -225
  36. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  37. package/dist/adapter/helpers/parse-shader-compiler-log.js +47 -37
  38. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  39. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  40. package/dist/adapter/helpers/set-uniform.js +68 -82
  41. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  42. package/dist/adapter/helpers/webgl-topology-utils.js +78 -93
  43. package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
  44. package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
  45. package/dist/adapter/objects/constants-to-keys.js +19 -12
  46. package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
  47. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
  48. package/dist/adapter/objects/webgl-renderbuffer.js +86 -77
  49. package/dist/adapter/objects/webgl-resource.d.ts +3 -25
  50. package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
  51. package/dist/adapter/objects/webgl-resource.js +102 -146
  52. package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
  53. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  54. package/dist/adapter/resources/webgl-buffer.js +161 -119
  55. package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
  56. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgl-command-buffer.js +266 -168
  58. package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
  59. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  60. package/dist/adapter/resources/webgl-command-encoder.js +33 -39
  61. package/dist/adapter/resources/webgl-external-texture.js +93 -1
  62. package/dist/adapter/resources/webgl-framebuffer.d.ts +8 -10
  63. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgl-framebuffer.js +167 -137
  65. package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
  66. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
  67. package/dist/adapter/resources/webgl-query-set.js +136 -0
  68. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
  69. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  70. package/dist/adapter/resources/webgl-render-pass.js +124 -90
  71. package/dist/adapter/resources/webgl-render-pipeline.d.ts +15 -6
  72. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-render-pipeline.js +356 -221
  74. package/dist/adapter/resources/webgl-sampler.d.ts +1 -3
  75. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  76. package/dist/adapter/resources/webgl-sampler.js +43 -33
  77. package/dist/adapter/resources/webgl-shader.d.ts +12 -2
  78. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-shader.js +114 -47
  80. package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
  81. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
  82. package/dist/adapter/resources/webgl-texture-view.js +18 -0
  83. package/dist/adapter/resources/webgl-texture.d.ts +6 -9
  84. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  85. package/dist/adapter/resources/webgl-texture.js +615 -695
  86. package/dist/adapter/resources/webgl-transform-feedback.d.ts +2 -2
  87. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  88. package/dist/adapter/resources/webgl-transform-feedback.js +141 -143
  89. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
  90. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  91. package/dist/adapter/resources/webgl-vertex-array.js +229 -157
  92. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  93. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  94. package/dist/adapter/webgl-canvas-context.js +58 -36
  95. package/dist/adapter/webgl-device.d.ts +34 -40
  96. package/dist/adapter/webgl-device.d.ts.map +1 -1
  97. package/dist/adapter/webgl-device.js +418 -363
  98. package/dist/classic/accessor.d.ts.map +1 -1
  99. package/dist/classic/accessor.js +132 -101
  100. package/dist/classic/clear.d.ts +2 -2
  101. package/dist/classic/clear.d.ts.map +1 -1
  102. package/dist/classic/clear.js +73 -72
  103. package/dist/classic/copy-and-blit.d.ts +1 -1
  104. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  105. package/dist/classic/copy-and-blit.js +175 -175
  106. package/dist/classic/format-utils.d.ts +2 -2
  107. package/dist/classic/format-utils.d.ts.map +1 -1
  108. package/dist/classic/format-utils.js +39 -32
  109. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  110. package/dist/classic/typed-array-utils.js +96 -81
  111. package/dist/context/context/context-data.d.ts +14 -0
  112. package/dist/context/context/context-data.d.ts.map +1 -0
  113. package/dist/context/context/context-data.js +33 -0
  114. package/dist/context/context/create-browser-context.d.ts +1 -6
  115. package/dist/context/context/create-browser-context.d.ts.map +1 -1
  116. package/dist/context/context/create-browser-context.js +62 -49
  117. package/dist/context/debug/spector.d.ts.map +1 -1
  118. package/dist/context/debug/spector.js +55 -50
  119. package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
  120. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  121. package/dist/context/debug/webgl-developer-tools.js +104 -77
  122. package/dist/context/helpers/create-browser-context.d.ts +35 -0
  123. package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
  124. package/dist/context/helpers/create-browser-context.js +67 -0
  125. package/dist/context/{polyfill/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -2
  126. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
  127. package/dist/context/helpers/webgl-context-data.js +21 -0
  128. package/dist/context/helpers/webgl-extensions.d.ts +4 -0
  129. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
  130. package/dist/context/helpers/webgl-extensions.js +10 -0
  131. package/dist/context/parameters/unified-parameter-api.d.ts +3 -3
  132. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  133. package/dist/context/parameters/unified-parameter-api.js +94 -44
  134. package/dist/context/parameters/webgl-parameter-tables.d.ts +120 -99
  135. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  136. package/dist/context/parameters/webgl-parameter-tables.js +469 -404
  137. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  138. package/dist/context/state-tracker/deep-array-equal.js +19 -14
  139. package/dist/context/state-tracker/track-context-state.d.ts +4 -4
  140. package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
  141. package/dist/context/state-tracker/track-context-state.js +188 -123
  142. package/dist/context/state-tracker/with-parameters.d.ts +2 -2
  143. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  144. package/dist/context/state-tracker/with-parameters.js +43 -26
  145. package/dist/dist.dev.js +3135 -4142
  146. package/dist/index.cjs +1766 -2717
  147. package/dist/index.cjs.map +7 -0
  148. package/dist/index.d.ts +25 -28
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +16 -5
  151. package/dist/types.d.ts.map +1 -1
  152. package/dist/types.js +3 -1
  153. package/dist.min.js +9 -42
  154. package/package.json +11 -15
  155. package/src/adapter/converters/device-parameters.ts +105 -17
  156. package/src/adapter/converters/sampler-parameters.ts +12 -20
  157. package/src/adapter/converters/shader-formats.ts +47 -22
  158. package/src/adapter/converters/texture-formats.ts +138 -185
  159. package/src/adapter/converters/vertex-formats.ts +3 -3
  160. package/src/adapter/device-helpers/webgl-device-features.ts +101 -0
  161. package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +30 -22
  162. package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
  163. package/src/adapter/helpers/decode-webgl-types.ts +13 -7
  164. package/src/adapter/helpers/get-shader-layout.ts +21 -31
  165. package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
  166. package/src/adapter/helpers/set-uniform.ts +3 -4
  167. package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
  168. package/src/adapter/objects/constants-to-keys.ts +3 -2
  169. package/src/adapter/objects/webgl-renderbuffer.ts +38 -16
  170. package/src/adapter/objects/webgl-resource.ts +7 -140
  171. package/src/adapter/resources/webgl-buffer.ts +10 -14
  172. package/src/adapter/resources/webgl-command-buffer.ts +24 -34
  173. package/src/adapter/resources/webgl-command-encoder.ts +14 -11
  174. package/src/adapter/resources/webgl-external-texture.ts +5 -5
  175. package/src/adapter/resources/webgl-framebuffer.ts +38 -34
  176. package/src/adapter/resources/webgl-query-set.ts +171 -0
  177. package/src/adapter/resources/webgl-render-pass.ts +24 -15
  178. package/src/adapter/resources/webgl-render-pipeline.ts +138 -70
  179. package/src/adapter/resources/webgl-sampler.ts +7 -10
  180. package/src/adapter/resources/webgl-shader.ts +65 -11
  181. package/src/adapter/resources/webgl-texture-view.ts +28 -0
  182. package/src/adapter/resources/webgl-texture.ts +38 -105
  183. package/src/adapter/resources/webgl-transform-feedback.ts +16 -22
  184. package/src/adapter/resources/webgl-vertex-array.ts +20 -21
  185. package/src/adapter/webgl-canvas-context.ts +7 -11
  186. package/src/adapter/webgl-device.ts +106 -151
  187. package/src/classic/accessor.ts +5 -4
  188. package/src/classic/clear.ts +25 -20
  189. package/src/classic/copy-and-blit.ts +12 -6
  190. package/src/classic/format-utils.ts +2 -1
  191. package/src/classic/typed-array-utils.ts +3 -7
  192. package/src/context/debug/spector.ts +9 -6
  193. package/src/context/debug/webgl-developer-tools.ts +31 -20
  194. package/src/context/{context → helpers}/create-browser-context.ts +9 -33
  195. package/src/context/{polyfill/context-data.ts → helpers/webgl-context-data.ts} +3 -2
  196. package/src/context/helpers/webgl-extensions.ts +17 -0
  197. package/src/context/parameters/unified-parameter-api.ts +5 -4
  198. package/src/context/parameters/webgl-parameter-tables.ts +118 -90
  199. package/src/context/state-tracker/deep-array-equal.ts +2 -1
  200. package/src/context/state-tracker/track-context-state.ts +29 -23
  201. package/src/context/state-tracker/with-parameters.ts +7 -2
  202. package/src/index.ts +4 -18
  203. package/src/types.ts +2 -1
  204. package/dist/adapter/converters/device-parameters.js.map +0 -1
  205. package/dist/adapter/converters/sampler-parameters.js.map +0 -1
  206. package/dist/adapter/converters/shader-formats.js.map +0 -1
  207. package/dist/adapter/converters/texture-formats.js.map +0 -1
  208. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  209. package/dist/adapter/device-helpers/device-features.js.map +0 -1
  210. package/dist/adapter/device-helpers/device-limits.js.map +0 -1
  211. package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
  212. package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
  213. package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
  214. package/dist/adapter/device-helpers/is-old-ie.js +0 -9
  215. package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
  216. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  217. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  218. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
  219. package/dist/adapter/helpers/set-uniform.js.map +0 -1
  220. package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
  221. package/dist/adapter/objects/constants-to-keys.js.map +0 -1
  222. package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
  223. package/dist/adapter/objects/webgl-resource.js.map +0 -1
  224. package/dist/adapter/resources/webgl-buffer.js.map +0 -1
  225. package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
  226. package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
  227. package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
  228. package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
  229. package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
  230. package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
  231. package/dist/adapter/resources/webgl-sampler.js.map +0 -1
  232. package/dist/adapter/resources/webgl-shader.js.map +0 -1
  233. package/dist/adapter/resources/webgl-texture.js.map +0 -1
  234. package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
  235. package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
  236. package/dist/adapter/webgl-canvas-context.js.map +0 -1
  237. package/dist/adapter/webgl-device.js.map +0 -1
  238. package/dist/classic/accessor.js.map +0 -1
  239. package/dist/classic/clear.js.map +0 -1
  240. package/dist/classic/copy-and-blit.js.map +0 -1
  241. package/dist/classic/format-utils.js.map +0 -1
  242. package/dist/classic/typed-array-utils.js.map +0 -1
  243. package/dist/context/context/create-browser-context.js.map +0 -1
  244. package/dist/context/context/create-headless-context.d.ts +0 -9
  245. package/dist/context/context/create-headless-context.d.ts.map +0 -1
  246. package/dist/context/context/create-headless-context.js +0 -42
  247. package/dist/context/context/create-headless-context.js.map +0 -1
  248. package/dist/context/context/webgl-checks.d.ts +0 -13
  249. package/dist/context/context/webgl-checks.d.ts.map +0 -1
  250. package/dist/context/context/webgl-checks.js +0 -31
  251. package/dist/context/context/webgl-checks.js.map +0 -1
  252. package/dist/context/debug/spector.js.map +0 -1
  253. package/dist/context/debug/webgl-developer-tools.js.map +0 -1
  254. package/dist/context/parameters/unified-parameter-api.js.map +0 -1
  255. package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
  256. package/dist/context/polyfill/context-data.d.ts.map +0 -1
  257. package/dist/context/polyfill/context-data.js +0 -12
  258. package/dist/context/polyfill/context-data.js.map +0 -1
  259. package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
  260. package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
  261. package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
  262. package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
  263. package/dist/context/polyfill/polyfill-context.d.ts +0 -5
  264. package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
  265. package/dist/context/polyfill/polyfill-context.js +0 -87
  266. package/dist/context/polyfill/polyfill-context.js.map +0 -1
  267. package/dist/context/polyfill/polyfill-table.d.ts +0 -48
  268. package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
  269. package/dist/context/polyfill/polyfill-table.js +0 -137
  270. package/dist/context/polyfill/polyfill-table.js.map +0 -1
  271. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
  272. package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
  273. package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
  274. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
  275. package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
  276. package/dist/context/state-tracker/track-context-state.js.map +0 -1
  277. package/dist/context/state-tracker/with-parameters.js.map +0 -1
  278. package/dist/index.js.map +0 -1
  279. package/dist/types.js.map +0 -1
  280. package/src/adapter/device-helpers/device-features.ts +0 -161
  281. package/src/adapter/device-helpers/device-limits.ts +0 -155
  282. package/src/adapter/device-helpers/is-old-ie.ts +0 -14
  283. package/src/context/context/create-headless-context.ts +0 -51
  284. package/src/context/context/webgl-checks.ts +0 -51
  285. package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
  286. package/src/context/polyfill/polyfill-context.ts +0 -104
  287. package/src/context/polyfill/polyfill-table.ts +0 -167
  288. package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -365
@@ -1,245 +1,380 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { RenderPipeline, cast, splitUniformsAndBindings, log } from '@luma.gl/core';
2
5
  import { mergeShaderLayout } from '@luma.gl/core';
6
+ // import {mergeShaderLayout, getAttributeInfosFromLayouts} from '@luma.gl/core';
7
+ import { GL } from '@luma.gl/constants';
3
8
  import { getShaderLayout } from "../helpers/get-shader-layout.js";
4
9
  import { withDeviceAndGLParameters } from "../converters/device-parameters.js";
5
10
  import { setUniform } from "../helpers/set-uniform.js";
6
11
  import { WEBGLBuffer } from "./webgl-buffer.js";
7
12
  import { WEBGLFramebuffer } from "./webgl-framebuffer.js";
8
13
  import { WEBGLTexture } from "./webgl-texture.js";
14
+ import { WEBGLTextureView } from "./webgl-texture-view.js";
9
15
  import { getGLDrawMode } from "../helpers/webgl-topology-utils.js";
10
16
  const LOG_PROGRAM_PERF_PRIORITY = 4;
17
+ /** Creates a new render pipeline */
11
18
  export class WEBGLRenderPipeline extends RenderPipeline {
12
- constructor(device, props) {
13
- super(device, props);
14
- this.device = void 0;
15
- this.handle = void 0;
16
- this.vs = void 0;
17
- this.fs = void 0;
18
- this.introspectedLayout = void 0;
19
- this.uniforms = {};
20
- this.bindings = {};
21
- this.varyings = null;
22
- this._uniformCount = 0;
23
- this._uniformSetters = {};
24
- this.device = device;
25
- this.handle = this.props.handle || this.device.gl.createProgram();
26
- this.device.setSpectorMetadata(this.handle, {
27
- id: this.props.id
28
- });
29
- this.vs = cast(props.vs);
30
- this.fs = cast(props.fs);
31
- const {
32
- varyings,
33
- bufferMode = 35981
34
- } = props;
35
- if (varyings && varyings.length > 0) {
36
- var _this$device$gl;
37
- this.device.assertWebGL2();
38
- this.varyings = varyings;
39
- (_this$device$gl = this.device.gl2) === null || _this$device$gl === void 0 ? void 0 : _this$device$gl.transformFeedbackVaryings(this.handle, varyings, bufferMode);
19
+ /** The WebGL device that created this render pipeline */
20
+ device;
21
+ /** Handle to underlying WebGL program */
22
+ handle;
23
+ /** vertex shader */
24
+ vs;
25
+ /** fragment shader */
26
+ fs;
27
+ /** The layout extracted from shader by WebGL introspection APIs */
28
+ introspectedLayout;
29
+ /** Uniforms set on this model */
30
+ uniforms = {};
31
+ /** Bindings set on this model */
32
+ bindings = {};
33
+ /** WebGL varyings */
34
+ varyings = null;
35
+ _uniformCount = 0;
36
+ _uniformSetters = {}; // TODO are these used?
37
+ constructor(device, props) {
38
+ super(device, props);
39
+ this.device = device;
40
+ this.handle = this.props.handle || this.device.gl.createProgram();
41
+ this.device.setSpectorMetadata(this.handle, { id: this.props.id });
42
+ // Create shaders if needed
43
+ this.vs = cast(props.vs);
44
+ this.fs = cast(props.fs);
45
+ // assert(this.vs.stage === 'vertex');
46
+ // assert(this.fs.stage === 'fragment');
47
+ // Setup varyings if supplied
48
+ // @ts-expect-error WebGL only
49
+ const { varyings, bufferMode = GL.SEPARATE_ATTRIBS } = props;
50
+ if (varyings && varyings.length > 0) {
51
+ this.varyings = varyings;
52
+ this.device.gl.transformFeedbackVaryings(this.handle, varyings, bufferMode);
53
+ }
54
+ this._linkShaders();
55
+ log.time(0, `RenderPipeline ${this.id} - shaderLayout introspection`)();
56
+ this.introspectedLayout = getShaderLayout(this.device.gl, this.handle);
57
+ log.timeEnd(0, `RenderPipeline ${this.id} - shaderLayout introspection`)();
58
+ // Merge provided layout with introspected layout
59
+ this.shaderLayout = mergeShaderLayout(this.introspectedLayout, props.shaderLayout);
60
+ // WebGPU has more restrictive topology support than WebGL
61
+ switch (this.props.topology) {
62
+ case 'triangle-fan-webgl':
63
+ case 'line-loop-webgl':
64
+ log.warn(`Primitive topology ${this.props.topology} is deprecated and will be removed in v9.1`);
65
+ break;
66
+ default:
67
+ }
40
68
  }
41
- this._compileAndLink();
42
- this.introspectedLayout = getShaderLayout(this.device.gl, this.handle);
43
- this.shaderLayout = mergeShaderLayout(this.introspectedLayout, props.shaderLayout);
44
- switch (this.props.topology) {
45
- case 'triangle-fan-webgl':
46
- case 'line-loop-webgl':
47
- log.warn(`Primitive topology ${this.props.topology} is deprecated and will be removed in v9.1`);
48
- break;
49
- default:
69
+ destroy() {
70
+ if (this.handle) {
71
+ this.device.gl.deleteProgram(this.handle);
72
+ // this.handle = null;
73
+ this.destroyed = true;
74
+ }
50
75
  }
51
- }
52
- destroy() {
53
- if (this.handle) {
54
- this.device.gl.deleteProgram(this.handle);
55
- this.destroyed = true;
76
+ /**
77
+ * Bindings include: textures, samplers and uniform buffers
78
+ * @todo needed for portable model
79
+ */
80
+ setBindings(bindings) {
81
+ // if (log.priority >= 2) {
82
+ // checkUniformValues(uniforms, this.id, this._uniformSetters);
83
+ // }
84
+ for (const [name, value] of Object.entries(bindings)) {
85
+ // Accept both `xyz` and `xyzUniforms` as valid names for `xyzUniforms` uniform block
86
+ // This convention allows shaders to name uniform blocks as `uniform appUniforms {} app;`
87
+ // and reference them as `app` from both GLSL and JS.
88
+ // TODO - this is rather hacky - we could also remap the name directly in the shader layout.
89
+ const binding = this.shaderLayout.bindings.find(binding => binding.name === name) ||
90
+ this.shaderLayout.bindings.find(binding => binding.name === `${name}Uniforms`);
91
+ if (!binding) {
92
+ const validBindings = this.shaderLayout.bindings
93
+ .map(binding => `"${binding.name}"`)
94
+ .join(', ');
95
+ log.warn(`Unknown binding "${name}" in render pipeline "${this.id}", expected one of ${validBindings}`)();
96
+ continue; // eslint-disable-line no-continue
97
+ }
98
+ if (!value) {
99
+ log.warn(`Unsetting binding "${name}" in render pipeline "${this.id}"`)();
100
+ }
101
+ switch (binding.type) {
102
+ case 'uniform':
103
+ // @ts-expect-error
104
+ if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {
105
+ throw new Error('buffer value');
106
+ }
107
+ break;
108
+ case 'texture':
109
+ if (!(value instanceof WEBGLTextureView ||
110
+ value instanceof WEBGLTexture ||
111
+ value instanceof WEBGLFramebuffer)) {
112
+ throw new Error('texture value');
113
+ }
114
+ break;
115
+ case 'sampler':
116
+ log.warn(`Ignoring sampler ${name}`)();
117
+ break;
118
+ default:
119
+ throw new Error(binding.type);
120
+ }
121
+ this.bindings[name] = value;
122
+ }
56
123
  }
57
- }
58
- setBindings(bindings) {
59
- for (const [name, value] of Object.entries(bindings)) {
60
- const binding = this.shaderLayout.bindings.find(binding => binding.name === name) || this.shaderLayout.bindings.find(binding => binding.name === `${name}Uniforms`);
61
- if (!binding) {
62
- const validBindings = this.shaderLayout.bindings.map(binding => `"${binding.name}"`).join(', ');
63
- log.warn(`Unknown binding "${name}" in render pipeline "${this.id}", expected one of ${validBindings}`)();
64
- continue;
65
- }
66
- if (!value) {
67
- log.warn(`Unsetting binding "${name}" in render pipeline "${this.id}"`)();
68
- }
69
- switch (binding.type) {
70
- case 'uniform':
71
- if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {
72
- throw new Error('buffer value');
73
- }
74
- break;
75
- case 'texture':
76
- if (!(value instanceof WEBGLTexture || value instanceof WEBGLFramebuffer)) {
77
- throw new Error('texture value');
78
- }
79
- break;
80
- case 'sampler':
81
- log.warn(`Ignoring sampler ${name}`)();
82
- break;
83
- default:
84
- throw new Error(binding.type);
85
- }
86
- this.bindings[name] = value;
124
+ /** @todo needed for portable model
125
+ * @note The WebGL API is offers many ways to draw things
126
+ * This function unifies those ways into a single call using common parameters with sane defaults
127
+ */
128
+ draw(options) {
129
+ // If we are using async linking, we need to wait until linking completes
130
+ if (this.linkStatus !== 'success') {
131
+ return false;
132
+ }
133
+ const { renderPass, vertexArray, vertexCount,
134
+ // indexCount,
135
+ instanceCount, firstVertex = 0,
136
+ // firstIndex,
137
+ // firstInstance,
138
+ // baseVertex,
139
+ transformFeedback } = options;
140
+ const glDrawMode = getGLDrawMode(this.props.topology);
141
+ const isIndexed = Boolean(vertexArray.indexBuffer);
142
+ const glIndexType = vertexArray.indexBuffer?.glIndexType;
143
+ const isInstanced = Number(instanceCount) > 0;
144
+ // Avoid WebGL draw call when not rendering any data or values are incomplete
145
+ // Note: async textures set as uniforms might still be loading.
146
+ // Now that all uniforms have been updated, check if any texture
147
+ // in the uniforms is not yet initialized, then we don't draw
148
+ if (!this._areTexturesRenderable() || vertexCount === 0) {
149
+ // (isInstanced && instanceCount === 0)
150
+ return false;
151
+ }
152
+ this.device.gl.useProgram(this.handle);
153
+ // Note: Rebinds constant attributes before each draw call
154
+ vertexArray.bindBeforeRender(renderPass);
155
+ if (transformFeedback) {
156
+ transformFeedback.begin(this.props.topology);
157
+ }
158
+ // We have to apply bindings before every draw call since other draw calls will overwrite
159
+ this._applyBindings();
160
+ this._applyUniforms();
161
+ const webglRenderPass = renderPass;
162
+ withDeviceAndGLParameters(this.device, this.props.parameters, webglRenderPass.glParameters, () => {
163
+ if (isIndexed && isInstanced) {
164
+ this.device.gl.drawElementsInstanced(glDrawMode, vertexCount || 0, // indexCount?
165
+ glIndexType, firstVertex, instanceCount || 0);
166
+ // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {
167
+ // this.device.gldrawRangeElements(glDrawMode, start, end, vertexCount, glIndexType, offset);
168
+ }
169
+ else if (isIndexed) {
170
+ this.device.gl.drawElements(glDrawMode, vertexCount || 0, glIndexType, firstVertex); // indexCount?
171
+ }
172
+ else if (isInstanced) {
173
+ this.device.gl.drawArraysInstanced(glDrawMode, firstVertex, vertexCount || 0, instanceCount || 0);
174
+ }
175
+ else {
176
+ this.device.gl.drawArrays(glDrawMode, firstVertex, vertexCount || 0);
177
+ }
178
+ if (transformFeedback) {
179
+ transformFeedback.end();
180
+ }
181
+ });
182
+ vertexArray.unbindAfterRender(renderPass);
183
+ return true;
87
184
  }
88
- }
89
- setUniforms(uniforms) {
90
- const {
91
- bindings
92
- } = splitUniformsAndBindings(uniforms);
93
- Object.keys(bindings).forEach(name => {
94
- log.warn(`Unsupported value "${JSON.stringify(bindings[name])}" used in setUniforms() for key ${name}. Use setBindings() instead?`)();
95
- });
96
- Object.assign(this.uniforms, uniforms);
97
- }
98
- draw(options) {
99
- var _vertexArray$indexBuf;
100
- const {
101
- renderPass,
102
- vertexArray,
103
- vertexCount,
104
- instanceCount,
105
- firstVertex = 0,
106
- transformFeedback
107
- } = options;
108
- const glDrawMode = getGLDrawMode(this.props.topology);
109
- const isIndexed = Boolean(vertexArray.indexBuffer);
110
- const glIndexType = (_vertexArray$indexBuf = vertexArray.indexBuffer) === null || _vertexArray$indexBuf === void 0 ? void 0 : _vertexArray$indexBuf.glIndexType;
111
- const isInstanced = Number(instanceCount) > 0;
112
- if (!this._areTexturesRenderable() || vertexCount === 0) {
113
- return false;
185
+ // DEPRECATED METHODS
186
+ setUniformsWebGL(uniforms) {
187
+ const { bindings } = splitUniformsAndBindings(uniforms);
188
+ Object.keys(bindings).forEach(name => {
189
+ log.warn(`Unsupported value "${JSON.stringify(bindings[name])}" used in setUniforms() for key ${name}. Use setBindings() instead?`)();
190
+ });
191
+ // TODO - check against layout
192
+ Object.assign(this.uniforms, uniforms);
114
193
  }
115
- this.device.gl.useProgram(this.handle);
116
- vertexArray.bindBeforeRender(renderPass);
117
- if (transformFeedback) {
118
- transformFeedback.begin(this.props.topology);
194
+ // PRIVATE METHODS
195
+ // setAttributes(attributes: Record<string, Buffer>): void {}
196
+ // setBindings(bindings: Record<string, Binding>): void {}
197
+ async _linkShaders() {
198
+ const { gl } = this.device;
199
+ gl.attachShader(this.handle, this.vs.handle);
200
+ gl.attachShader(this.handle, this.fs.handle);
201
+ log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
202
+ gl.linkProgram(this.handle);
203
+ log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
204
+ // TODO Avoid checking program linking error in production
205
+ if (log.level === 0) {
206
+ // return;
207
+ }
208
+ if (!this.device.features.has('compilation-status-async-webgl')) {
209
+ const status = this._getLinkStatus();
210
+ this._reportLinkStatus(status);
211
+ return;
212
+ }
213
+ // async case
214
+ log.once(1, 'RenderPipeline linking is asynchronous')();
215
+ await this._waitForLinkComplete();
216
+ log.info(2, `RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();
217
+ const status = this._getLinkStatus();
218
+ this._reportLinkStatus(status);
119
219
  }
120
- this._applyBindings();
121
- this._applyUniforms();
122
- const webglRenderPass = renderPass;
123
- withDeviceAndGLParameters(this.device, this.props.parameters, webglRenderPass.glParameters, () => {
124
- if (isIndexed && isInstanced) {
125
- var _this$device$gl2;
126
- (_this$device$gl2 = this.device.gl2) === null || _this$device$gl2 === void 0 ? void 0 : _this$device$gl2.drawElementsInstanced(glDrawMode, vertexCount || 0, glIndexType, firstVertex, instanceCount || 0);
127
- } else if (isIndexed) {
128
- this.device.gl.drawElements(glDrawMode, vertexCount || 0, glIndexType, firstVertex);
129
- } else if (isInstanced) {
130
- var _this$device$gl3;
131
- (_this$device$gl3 = this.device.gl2) === null || _this$device$gl3 === void 0 ? void 0 : _this$device$gl3.drawArraysInstanced(glDrawMode, firstVertex, vertexCount || 0, instanceCount || 0);
132
- } else {
133
- this.device.gl.drawArrays(glDrawMode, firstVertex, vertexCount || 0);
134
- }
135
- if (transformFeedback) {
136
- transformFeedback.end();
137
- }
138
- });
139
- vertexArray.unbindAfterRender(renderPass);
140
- return true;
141
- }
142
- _compileAndLink() {
143
- const {
144
- gl
145
- } = this.device;
146
- gl.attachShader(this.handle, this.vs.handle);
147
- gl.attachShader(this.handle, this.fs.handle);
148
- log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
149
- gl.linkProgram(this.handle);
150
- log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
151
- if (!gl.debug && log.level === 0) {}
152
- const linked = gl.getProgramParameter(this.handle, 35714);
153
- if (!linked) {
154
- throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);
220
+ /** Report link status. First, check for shader compilation failures if linking fails */
221
+ _reportLinkStatus(status) {
222
+ switch (status) {
223
+ case 'success':
224
+ return;
225
+ default:
226
+ // First check for shader compilation failures if linking fails
227
+ if (this.vs.compilationStatus === 'error') {
228
+ this.vs.debugShader();
229
+ throw new Error(`Error during compilation of shader ${this.vs.id}`);
230
+ }
231
+ if (this.fs?.compilationStatus === 'error') {
232
+ this.vs.debugShader();
233
+ throw new Error(`Error during compilation of shader ${this.fs.id}`);
234
+ }
235
+ throw new Error(`Error during ${status}: ${this.device.gl.getProgramInfoLog(this.handle)}`);
236
+ }
155
237
  }
156
- gl.validateProgram(this.handle);
157
- const validated = gl.getProgramParameter(this.handle, 35715);
158
- if (!validated) {
159
- throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);
238
+ /**
239
+ * Get the shader compilation status
240
+ * TODO - Load log even when no error reported, to catch warnings?
241
+ * https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings
242
+ */
243
+ _getLinkStatus() {
244
+ const { gl } = this.device;
245
+ const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
246
+ if (!linked) {
247
+ this.linkStatus = 'error';
248
+ return 'linking';
249
+ }
250
+ gl.validateProgram(this.handle);
251
+ const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
252
+ if (!validated) {
253
+ this.linkStatus = 'error';
254
+ return 'validation';
255
+ }
256
+ this.linkStatus = 'success';
257
+ return 'success';
160
258
  }
161
- }
162
- _areTexturesRenderable() {
163
- let texturesRenderable = true;
164
- for (const [, texture] of Object.entries(this.bindings)) {
165
- if (texture instanceof WEBGLTexture) {
166
- texture.update();
167
- texturesRenderable = texturesRenderable && texture.loaded;
168
- }
259
+ /** Use KHR_parallel_shader_compile extension if available */
260
+ async _waitForLinkComplete() {
261
+ const waitMs = async (ms) => await new Promise(resolve => setTimeout(resolve, ms));
262
+ const DELAY_MS = 10; // Shader compilation is typically quite fast (with some exceptions)
263
+ // If status polling is not available, we can't wait for completion. Just wait a little to minimize blocking
264
+ if (!this.device.features.has('compilation-status-async-webgl')) {
265
+ await waitMs(DELAY_MS);
266
+ return;
267
+ }
268
+ const { gl } = this.device;
269
+ for (;;) {
270
+ const complete = gl.getProgramParameter(this.handle, GL.COMPLETION_STATUS_KHR);
271
+ if (complete) {
272
+ return;
273
+ }
274
+ await waitMs(DELAY_MS);
275
+ }
169
276
  }
170
- return texturesRenderable;
171
- }
172
- _applyBindings() {
173
- this.device.gl.useProgram(this.handle);
174
- const {
175
- gl2
176
- } = this.device;
177
- if (!gl2) {
178
- throw new Error('bindings');
277
+ /**
278
+ * Checks if all texture-values uniforms are renderable (i.e. loaded)
279
+ * Update a texture if needed (e.g. from video)
280
+ * Note: This is currently done before every draw call
281
+ */
282
+ _areTexturesRenderable() {
283
+ let texturesRenderable = true;
284
+ for (const [, texture] of Object.entries(this.bindings)) {
285
+ if (texture instanceof WEBGLTexture) {
286
+ texture.update();
287
+ texturesRenderable = texturesRenderable && texture.loaded;
288
+ }
289
+ }
290
+ return texturesRenderable;
179
291
  }
180
- let textureUnit = 0;
181
- let uniformBufferIndex = 0;
182
- for (const binding of this.shaderLayout.bindings) {
183
- const value = this.bindings[binding.name] || this.bindings[binding.name.replace(/Uniforms$/, '')];
184
- if (!value) {
185
- throw new Error(`No value for binding ${binding.name} in ${this.id}`);
186
- }
187
- switch (binding.type) {
188
- case 'uniform':
189
- const {
190
- name
191
- } = binding;
192
- const location = gl2.getUniformBlockIndex(this.handle, name);
193
- if (location === 4294967295) {
194
- throw new Error(`Invalid uniform block name ${name}`);
195
- }
196
- gl2.uniformBlockBinding(this.handle, uniformBufferIndex, location);
197
- if (value instanceof WEBGLBuffer) {
198
- gl2.bindBufferBase(35345, uniformBufferIndex, value.handle);
199
- } else {
200
- gl2.bindBufferRange(35345, uniformBufferIndex, value.buffer.handle, value.offset || 0, value.size || value.buffer.byteLength - value.offset);
201
- }
202
- uniformBufferIndex += 1;
203
- break;
204
- case 'texture':
205
- if (!(value instanceof WEBGLTexture || value instanceof WEBGLFramebuffer)) {
206
- throw new Error('texture');
207
- }
208
- let texture;
209
- if (value instanceof WEBGLTexture) {
210
- texture = value;
211
- } else if (value instanceof WEBGLFramebuffer && value.colorAttachments[0] instanceof WEBGLTexture) {
212
- log.warn('Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead')();
213
- texture = value.colorAttachments[0];
214
- } else {
215
- throw new Error('No texture');
216
- }
217
- gl2.activeTexture(33984 + textureUnit);
218
- gl2.bindTexture(texture.target, texture.handle);
219
- textureUnit += 1;
220
- break;
221
- case 'sampler':
222
- break;
223
- case 'storage':
224
- case 'read-only-storage':
225
- throw new Error(`binding type '${binding.type}' not supported in WebGL`);
226
- }
292
+ /** Apply any bindings (before each draw call) */
293
+ _applyBindings() {
294
+ // If we are using async linking, we need to wait until linking completes
295
+ if (this.linkStatus !== 'success') {
296
+ return;
297
+ }
298
+ const { gl } = this.device;
299
+ gl.useProgram(this.handle);
300
+ let textureUnit = 0;
301
+ let uniformBufferIndex = 0;
302
+ for (const binding of this.shaderLayout.bindings) {
303
+ // Accept both `xyz` and `xyzUniforms` as valid names for `xyzUniforms` uniform block
304
+ const value = this.bindings[binding.name] || this.bindings[binding.name.replace(/Uniforms$/, '')];
305
+ if (!value) {
306
+ throw new Error(`No value for binding ${binding.name} in ${this.id}`);
307
+ }
308
+ switch (binding.type) {
309
+ case 'uniform':
310
+ // Set buffer
311
+ const { name } = binding;
312
+ const location = gl.getUniformBlockIndex(this.handle, name);
313
+ if (location === GL.INVALID_INDEX) {
314
+ throw new Error(`Invalid uniform block name ${name}`);
315
+ }
316
+ gl.uniformBlockBinding(this.handle, uniformBufferIndex, location);
317
+ // console.debug(binding, location);
318
+ if (value instanceof WEBGLBuffer) {
319
+ gl.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);
320
+ }
321
+ else {
322
+ gl.bindBufferRange(GL.UNIFORM_BUFFER, uniformBufferIndex,
323
+ // @ts-expect-error
324
+ value.buffer.handle,
325
+ // @ts-expect-error
326
+ value.offset || 0,
327
+ // @ts-expect-error
328
+ value.size || value.buffer.byteLength - value.offset);
329
+ }
330
+ uniformBufferIndex += 1;
331
+ break;
332
+ case 'texture':
333
+ if (!(value instanceof WEBGLTextureView ||
334
+ value instanceof WEBGLTexture ||
335
+ value instanceof WEBGLFramebuffer)) {
336
+ throw new Error('texture');
337
+ }
338
+ let texture;
339
+ if (value instanceof WEBGLTextureView) {
340
+ texture = value.texture;
341
+ }
342
+ else if (value instanceof WEBGLTexture) {
343
+ texture = value;
344
+ }
345
+ else if (value instanceof WEBGLFramebuffer &&
346
+ value.colorAttachments[0] instanceof WEBGLTexture) {
347
+ log.warn('Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead')();
348
+ texture = value.colorAttachments[0];
349
+ }
350
+ else {
351
+ throw new Error('No texture');
352
+ }
353
+ gl.activeTexture(GL.TEXTURE0 + textureUnit);
354
+ gl.bindTexture(texture.target, texture.handle);
355
+ // gl.bindSampler(textureUnit, sampler.handle);
356
+ textureUnit += 1;
357
+ break;
358
+ case 'sampler':
359
+ // ignore
360
+ break;
361
+ case 'storage':
362
+ case 'read-only-storage':
363
+ throw new Error(`binding type '${binding.type}' not supported in WebGL`);
364
+ }
365
+ }
227
366
  }
228
- }
229
- _applyUniforms() {
230
- for (const uniformLayout of this.shaderLayout.uniforms || []) {
231
- var _this$uniforms$name;
232
- const {
233
- name,
234
- location,
235
- type,
236
- textureUnit
237
- } = uniformLayout;
238
- const value = (_this$uniforms$name = this.uniforms[name]) !== null && _this$uniforms$name !== void 0 ? _this$uniforms$name : textureUnit;
239
- if (value !== undefined) {
240
- setUniform(this.device.gl, location, type, value);
241
- }
367
+ /**
368
+ * Due to program sharing, uniforms need to be reset before every draw call
369
+ * (though caching will avoid redundant WebGL calls)
370
+ */
371
+ _applyUniforms() {
372
+ for (const uniformLayout of this.shaderLayout.uniforms || []) {
373
+ const { name, location, type, textureUnit } = uniformLayout;
374
+ const value = this.uniforms[name] ?? textureUnit;
375
+ if (value !== undefined) {
376
+ setUniform(this.device.gl, location, type, value);
377
+ }
378
+ }
242
379
  }
243
- }
244
380
  }
245
- //# sourceMappingURL=webgl-render-pipeline.js.map
@@ -1,10 +1,8 @@
1
1
  import { Sampler, SamplerProps } from '@luma.gl/core';
2
2
  import { GLSamplerParameters } from '@luma.gl/constants';
3
- import type { WebGLDevice } from '../webgl-device';
3
+ import type { WebGLDevice } from "../webgl-device.js";
4
4
  /**
5
5
  * Sampler object -
6
- * Under WebGL2 we create an actual WebGL sampler
7
- * Under WebGL1, we just store the sampler parameters
8
6
  * so that they can be set directly on the texture
9
7
  * https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html
10
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-sampler.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAK,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAEjD;;;;;;GAMG;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;IAU3C,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,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"}