@luma.gl/webgl 9.2.6 → 9.3.0-alpha.10

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 (247) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +1 -1
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +4 -1
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.d.ts +1 -1
  6. package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
  7. package/dist/adapter/converters/sampler-parameters.js +1 -1
  8. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  9. package/dist/adapter/converters/shader-formats.d.ts +1 -64
  10. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  11. package/dist/adapter/converters/shader-formats.js +1 -64
  12. package/dist/adapter/converters/shader-formats.js.map +1 -1
  13. package/dist/adapter/converters/webgl-shadertypes.d.ts +1 -3
  14. package/dist/adapter/converters/webgl-shadertypes.d.ts.map +1 -1
  15. package/dist/adapter/converters/webgl-shadertypes.js +1 -6
  16. package/dist/adapter/converters/webgl-shadertypes.js.map +1 -1
  17. package/dist/adapter/converters/webgl-texture-table.d.ts +8 -4
  18. package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -1
  19. package/dist/adapter/converters/webgl-texture-table.js +122 -58
  20. package/dist/adapter/converters/webgl-texture-table.js.map +1 -1
  21. package/dist/adapter/converters/webgl-vertex-formats.d.ts +1 -1
  22. package/dist/adapter/converters/webgl-vertex-formats.d.ts.map +1 -1
  23. package/dist/adapter/converters/webgl-vertex-formats.js +1 -1
  24. package/dist/adapter/converters/webgl-vertex-formats.js.map +1 -1
  25. package/dist/adapter/device-helpers/webgl-device-features.d.ts +1 -1
  26. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  27. package/dist/adapter/device-helpers/webgl-device-features.js +1 -2
  28. package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -1
  29. package/dist/adapter/device-helpers/webgl-device-info.d.ts +1 -1
  30. package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -1
  31. package/dist/adapter/device-helpers/webgl-device-info.js +6 -1
  32. package/dist/adapter/device-helpers/webgl-device-info.js.map +1 -1
  33. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +1 -1
  34. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -1
  35. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -1
  36. package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -1
  37. package/dist/adapter/helpers/format-utils.d.ts +1 -1
  38. package/dist/adapter/helpers/format-utils.d.ts.map +1 -1
  39. package/dist/adapter/helpers/format-utils.js +1 -1
  40. package/dist/adapter/helpers/format-utils.js.map +1 -1
  41. package/dist/adapter/helpers/get-shader-layout-from-glsl.js +36 -22
  42. package/dist/adapter/helpers/get-shader-layout-from-glsl.js.map +1 -1
  43. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts +1 -1
  44. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  45. package/dist/adapter/helpers/parse-shader-compiler-log.js +20 -0
  46. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  47. package/dist/adapter/helpers/set-uniform.d.ts +1 -1
  48. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  49. package/dist/adapter/helpers/set-uniform.js +1 -1
  50. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  51. package/dist/adapter/helpers/webgl-texture-utils.d.ts +1 -1
  52. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
  53. package/dist/adapter/helpers/webgl-texture-utils.js +4 -4
  54. package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -1
  55. package/dist/adapter/helpers/webgl-topology-utils.d.ts +1 -1
  56. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  57. package/dist/adapter/helpers/webgl-topology-utils.js +1 -1
  58. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -1
  59. package/dist/adapter/resources/webgl-buffer.d.ts +1 -1
  60. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgl-buffer.js +20 -5
  62. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  63. package/dist/adapter/resources/webgl-command-buffer.d.ts +3 -4
  64. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  65. package/dist/adapter/resources/webgl-command-buffer.js +29 -39
  66. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  67. package/dist/adapter/resources/webgl-command-encoder.d.ts +6 -5
  68. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  69. package/dist/adapter/resources/webgl-command-encoder.js +23 -8
  70. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  71. package/dist/adapter/resources/webgl-fence.d.ts +14 -0
  72. package/dist/adapter/resources/webgl-fence.d.ts.map +1 -0
  73. package/dist/adapter/resources/webgl-fence.js +49 -0
  74. package/dist/adapter/resources/webgl-fence.js.map +1 -0
  75. package/dist/adapter/resources/webgl-framebuffer.d.ts +3 -1
  76. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-framebuffer.js +10 -1
  78. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  79. package/dist/adapter/resources/webgl-query-set.d.ts +37 -31
  80. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -1
  81. package/dist/adapter/resources/webgl-query-set.js +247 -96
  82. package/dist/adapter/resources/webgl-query-set.js.map +1 -1
  83. package/dist/adapter/resources/webgl-render-pass.d.ts +1 -1
  84. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  85. package/dist/adapter/resources/webgl-render-pass.js +28 -11
  86. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  87. package/dist/adapter/resources/webgl-render-pipeline.d.ts +17 -21
  88. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  89. package/dist/adapter/resources/webgl-render-pipeline.js +70 -169
  90. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  91. package/dist/adapter/resources/webgl-sampler.d.ts +1 -1
  92. package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
  93. package/dist/adapter/resources/webgl-sampler.js +1 -1
  94. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  95. package/dist/adapter/resources/webgl-shader.d.ts +1 -1
  96. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  97. package/dist/adapter/resources/webgl-shader.js +15 -8
  98. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  99. package/dist/adapter/resources/webgl-shared-render-pipeline.d.ts +24 -0
  100. package/dist/adapter/resources/webgl-shared-render-pipeline.d.ts.map +1 -0
  101. package/dist/adapter/resources/webgl-shared-render-pipeline.js +155 -0
  102. package/dist/adapter/resources/webgl-shared-render-pipeline.js.map +1 -0
  103. package/dist/adapter/resources/webgl-texture.d.ts +42 -4
  104. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  105. package/dist/adapter/resources/webgl-texture.js +286 -62
  106. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  107. package/dist/adapter/resources/webgl-transform-feedback.js +6 -6
  108. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
  109. package/dist/adapter/resources/webgl-vertex-array.d.ts +2 -2
  110. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  111. package/dist/adapter/resources/webgl-vertex-array.js +1 -1
  112. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -1
  113. package/dist/adapter/webgl-adapter.d.ts.map +1 -1
  114. package/dist/adapter/webgl-adapter.js +22 -23
  115. package/dist/adapter/webgl-adapter.js.map +1 -1
  116. package/dist/adapter/webgl-canvas-context.d.ts +2 -2
  117. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  118. package/dist/adapter/webgl-canvas-context.js +16 -6
  119. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  120. package/dist/adapter/webgl-device.d.ts +10 -5
  121. package/dist/adapter/webgl-device.d.ts.map +1 -1
  122. package/dist/adapter/webgl-device.js +75 -28
  123. package/dist/adapter/webgl-device.js.map +1 -1
  124. package/dist/adapter/webgl-presentation-context.d.ts +21 -0
  125. package/dist/adapter/webgl-presentation-context.d.ts.map +1 -0
  126. package/dist/adapter/webgl-presentation-context.js +64 -0
  127. package/dist/adapter/webgl-presentation-context.js.map +1 -0
  128. package/dist/constants/index.d.ts +3 -0
  129. package/dist/constants/index.d.ts.map +1 -0
  130. package/dist/constants/index.js +5 -0
  131. package/dist/constants/index.js.map +1 -0
  132. package/dist/constants/webgl-constants.d.ts +822 -0
  133. package/dist/constants/webgl-constants.d.ts.map +1 -0
  134. package/dist/constants/webgl-constants.js +928 -0
  135. package/dist/constants/webgl-constants.js.map +1 -0
  136. package/dist/constants/webgl-types.d.ts +480 -0
  137. package/dist/constants/webgl-types.d.ts.map +1 -0
  138. package/dist/constants/webgl-types.js +6 -0
  139. package/dist/constants/webgl-types.js.map +1 -0
  140. package/dist/context/debug/spector.d.ts.map +1 -1
  141. package/dist/context/debug/spector.js +4 -4
  142. package/dist/context/debug/spector.js.map +1 -1
  143. package/dist/context/debug/webgl-developer-tools.js +7 -7
  144. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  145. package/dist/context/helpers/create-browser-context.d.ts.map +1 -1
  146. package/dist/context/helpers/create-browser-context.js +46 -36
  147. package/dist/context/helpers/create-browser-context.js.map +1 -1
  148. package/dist/context/helpers/webgl-context-data.d.ts +5 -1
  149. package/dist/context/helpers/webgl-context-data.d.ts.map +1 -1
  150. package/dist/context/helpers/webgl-context-data.js +9 -10
  151. package/dist/context/helpers/webgl-context-data.js.map +1 -1
  152. package/dist/context/helpers/webgl-extensions.d.ts +1 -1
  153. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -1
  154. package/dist/context/parameters/unified-parameter-api.d.ts +2 -2
  155. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  156. package/dist/context/parameters/unified-parameter-api.js +2 -2
  157. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  158. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  159. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  160. package/dist/context/parameters/webgl-parameter-tables.js +1 -1
  161. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  162. package/dist/context/polyfills/polyfill-webgl1-extensions.js +1 -1
  163. package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -1
  164. package/dist/context/state-tracker/webgl-state-tracker.js +2 -2
  165. package/dist/context/state-tracker/webgl-state-tracker.js.map +1 -1
  166. package/dist/dist.dev.js +1897 -999
  167. package/dist/dist.min.js +2 -2
  168. package/dist/index.cjs +3 -5255
  169. package/dist/index.cjs.map +4 -4
  170. package/dist/index.d.ts +3 -0
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +2 -0
  173. package/dist/index.js.map +1 -1
  174. package/dist/utils/fill-array.js +1 -1
  175. package/dist/utils/fill-array.js.map +1 -1
  176. package/dist/webgl-constants.d.ts +2 -0
  177. package/dist/webgl-constants.d.ts.map +1 -0
  178. package/dist/webgl-constants.js +5 -0
  179. package/dist/webgl-constants.js.map +1 -0
  180. package/dist/webgl-types.d.ts +2 -0
  181. package/dist/webgl-types.d.ts.map +1 -0
  182. package/dist/{types.js → webgl-types.js} +1 -1
  183. package/dist/webgl-types.js.map +1 -0
  184. package/package.json +19 -5
  185. package/src/adapter/converters/device-parameters.ts +6 -2
  186. package/src/adapter/converters/sampler-parameters.ts +1 -1
  187. package/src/adapter/converters/shader-formats.ts +1 -66
  188. package/src/adapter/converters/webgl-shadertypes.ts +1 -9
  189. package/src/adapter/converters/webgl-texture-table.ts +160 -68
  190. package/src/adapter/converters/webgl-vertex-formats.ts +1 -1
  191. package/src/adapter/device-helpers/webgl-device-features.ts +2 -3
  192. package/src/adapter/device-helpers/webgl-device-info.ts +7 -1
  193. package/src/adapter/device-helpers/webgl-device-limits.ts +1 -1
  194. package/src/adapter/helpers/format-utils.ts +1 -1
  195. package/src/adapter/helpers/get-shader-layout-from-glsl.ts +44 -24
  196. package/src/adapter/helpers/parse-shader-compiler-log.ts +23 -1
  197. package/src/adapter/helpers/set-uniform.ts +1 -1
  198. package/src/adapter/helpers/webgl-texture-utils.ts +4 -4
  199. package/src/adapter/helpers/webgl-topology-utils.ts +1 -1
  200. package/src/adapter/resources/webgl-buffer.ts +17 -5
  201. package/src/adapter/resources/webgl-command-buffer.ts +44 -48
  202. package/src/adapter/resources/webgl-command-encoder.ts +28 -11
  203. package/src/adapter/resources/webgl-fence.ts +55 -0
  204. package/src/adapter/resources/webgl-framebuffer.ts +12 -1
  205. package/src/adapter/resources/webgl-query-set.ts +295 -101
  206. package/src/adapter/resources/webgl-render-pass.ts +30 -13
  207. package/src/adapter/resources/webgl-render-pipeline.ts +102 -198
  208. package/src/adapter/resources/webgl-sampler.ts +1 -1
  209. package/src/adapter/resources/webgl-shader.ts +15 -8
  210. package/src/adapter/resources/webgl-shared-render-pipeline.ts +211 -0
  211. package/src/adapter/resources/webgl-texture.ts +455 -81
  212. package/src/adapter/resources/webgl-transform-feedback.ts +6 -6
  213. package/src/adapter/resources/webgl-vertex-array.ts +1 -1
  214. package/src/adapter/webgl-adapter.ts +26 -24
  215. package/src/adapter/webgl-canvas-context.ts +19 -8
  216. package/src/adapter/webgl-device.ts +91 -35
  217. package/src/adapter/webgl-presentation-context.ts +93 -0
  218. package/src/constants/index.d.ts.map +1 -0
  219. package/src/constants/index.js.map +1 -0
  220. package/src/constants/index.ts +31 -0
  221. package/src/constants/webgl-constants.d.ts.map +1 -0
  222. package/src/constants/webgl-constants.js.map +1 -0
  223. package/src/constants/webgl-constants.ts +1051 -0
  224. package/src/constants/webgl-types.d.ts.map +1 -0
  225. package/src/constants/webgl-types.js.map +1 -0
  226. package/src/constants/webgl-types.ts +813 -0
  227. package/src/context/debug/spector.ts +4 -4
  228. package/src/context/debug/webgl-developer-tools.ts +16 -7
  229. package/src/context/helpers/create-browser-context.ts +54 -43
  230. package/src/context/helpers/webgl-context-data.ts +17 -11
  231. package/src/context/helpers/webgl-extensions.ts +1 -1
  232. package/src/context/parameters/unified-parameter-api.ts +3 -3
  233. package/src/context/parameters/webgl-parameter-tables.ts +1 -1
  234. package/src/context/polyfills/polyfill-webgl1-extensions.ts +1 -1
  235. package/src/context/state-tracker/webgl-state-tracker.ts +2 -2
  236. package/src/index.ts +27 -0
  237. package/src/utils/fill-array.ts +1 -1
  238. package/src/webgl-constants.d.ts.map +1 -0
  239. package/src/webgl-constants.js.map +1 -0
  240. package/src/webgl-constants.ts +5 -0
  241. package/src/webgl-types.d.ts.map +1 -0
  242. package/src/webgl-types.js.map +1 -0
  243. package/src/webgl-types.ts +29 -0
  244. package/dist/types.d.ts +0 -11
  245. package/dist/types.d.ts.map +0 -1
  246. package/dist/types.js.map +0 -1
  247. package/src/types.ts +0 -14
@@ -0,0 +1,155 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { GL } from '@luma.gl/webgl/constants';
5
+ import { SharedRenderPipeline, log } from '@luma.gl/core';
6
+ import { getShaderLayoutFromGLSL } from "../helpers/get-shader-layout-from-glsl.js";
7
+ import { isGLSamplerType } from "../converters/webgl-shadertypes.js";
8
+ const LOG_PROGRAM_PERF_PRIORITY = 4;
9
+ export class WEBGLSharedRenderPipeline extends SharedRenderPipeline {
10
+ device;
11
+ handle;
12
+ vs;
13
+ fs;
14
+ introspectedLayout = { attributes: [], bindings: [], uniforms: [] };
15
+ linkStatus = 'pending';
16
+ constructor(device, props) {
17
+ super(device, props);
18
+ this.device = device;
19
+ this.handle = props.handle || this.device.gl.createProgram();
20
+ this.vs = props.vs;
21
+ this.fs = props.fs;
22
+ if (props.varyings && props.varyings.length > 0) {
23
+ this.device.gl.transformFeedbackVaryings(this.handle, props.varyings, props.bufferMode || 35981);
24
+ }
25
+ this._linkShaders();
26
+ // Introspection happens after linking to build wrapper-facing layout metadata.
27
+ // It is not a prerequisite for deciding whether a shared `WebGLProgram` can be
28
+ // reused; that decision must remain based on the shared-pipeline cache key alone.
29
+ log.time(3, `RenderPipeline ${this.id} - shaderLayout introspection`)();
30
+ this.introspectedLayout = getShaderLayoutFromGLSL(this.device.gl, this.handle);
31
+ log.timeEnd(3, `RenderPipeline ${this.id} - shaderLayout introspection`)();
32
+ }
33
+ destroy() {
34
+ if (this.destroyed) {
35
+ return;
36
+ }
37
+ this.device.gl.useProgram(null);
38
+ this.device.gl.deleteProgram(this.handle);
39
+ // @ts-expect-error
40
+ this.handle.destroyed = true;
41
+ this.destroyResource();
42
+ }
43
+ async _linkShaders() {
44
+ const { gl } = this.device;
45
+ gl.attachShader(this.handle, this.vs.handle);
46
+ gl.attachShader(this.handle, this.fs.handle);
47
+ log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
48
+ gl.linkProgram(this.handle);
49
+ log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
50
+ if (!this.device.features.has('compilation-status-async-webgl')) {
51
+ const status = this._getLinkStatus();
52
+ this._reportLinkStatus(status);
53
+ return;
54
+ }
55
+ log.once(1, 'RenderPipeline linking is asynchronous')();
56
+ await this._waitForLinkComplete();
57
+ log.info(2, `RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();
58
+ const status = this._getLinkStatus();
59
+ this._reportLinkStatus(status);
60
+ }
61
+ async _reportLinkStatus(status) {
62
+ switch (status) {
63
+ case 'success':
64
+ return;
65
+ default:
66
+ const errorType = status === 'link-error' ? 'Link error' : 'Validation error';
67
+ switch (this.vs.compilationStatus) {
68
+ case 'error':
69
+ this.vs.debugShader();
70
+ throw new Error(`${this} ${errorType} during compilation of ${this.vs}`);
71
+ case 'pending':
72
+ await this.vs.asyncCompilationStatus;
73
+ this.vs.debugShader();
74
+ break;
75
+ case 'success':
76
+ break;
77
+ }
78
+ switch (this.fs?.compilationStatus) {
79
+ case 'error':
80
+ this.fs.debugShader();
81
+ throw new Error(`${this} ${errorType} during compilation of ${this.fs}`);
82
+ case 'pending':
83
+ await this.fs.asyncCompilationStatus;
84
+ this.fs.debugShader();
85
+ break;
86
+ case 'success':
87
+ break;
88
+ }
89
+ const linkErrorLog = this.device.gl.getProgramInfoLog(this.handle);
90
+ this.device.reportError(new Error(`${errorType} during ${status}: ${linkErrorLog}`), this)();
91
+ this.device.debug();
92
+ }
93
+ }
94
+ _getLinkStatus() {
95
+ const { gl } = this.device;
96
+ const linked = gl.getProgramParameter(this.handle, 35714);
97
+ if (!linked) {
98
+ this.linkStatus = 'error';
99
+ return 'link-error';
100
+ }
101
+ this._initializeSamplerUniforms();
102
+ gl.validateProgram(this.handle);
103
+ const validated = gl.getProgramParameter(this.handle, 35715);
104
+ if (!validated) {
105
+ this.linkStatus = 'error';
106
+ return 'validation-error';
107
+ }
108
+ this.linkStatus = 'success';
109
+ return 'success';
110
+ }
111
+ _initializeSamplerUniforms() {
112
+ const { gl } = this.device;
113
+ gl.useProgram(this.handle);
114
+ let textureUnit = 0;
115
+ const uniformCount = gl.getProgramParameter(this.handle, 35718);
116
+ for (let uniformIndex = 0; uniformIndex < uniformCount; uniformIndex++) {
117
+ const activeInfo = gl.getActiveUniform(this.handle, uniformIndex);
118
+ if (activeInfo && isGLSamplerType(activeInfo.type)) {
119
+ const isArray = activeInfo.name.endsWith('[0]');
120
+ const uniformName = isArray ? activeInfo.name.slice(0, -3) : activeInfo.name;
121
+ const location = gl.getUniformLocation(this.handle, uniformName);
122
+ if (location !== null) {
123
+ textureUnit = this._assignSamplerUniform(location, activeInfo, isArray, textureUnit);
124
+ }
125
+ }
126
+ }
127
+ }
128
+ _assignSamplerUniform(location, activeInfo, isArray, textureUnit) {
129
+ const { gl } = this.device;
130
+ if (isArray && activeInfo.size > 1) {
131
+ const textureUnits = Int32Array.from({ length: activeInfo.size }, (_, arrayIndex) => textureUnit + arrayIndex);
132
+ gl.uniform1iv(location, textureUnits);
133
+ return textureUnit + activeInfo.size;
134
+ }
135
+ gl.uniform1i(location, textureUnit);
136
+ return textureUnit + 1;
137
+ }
138
+ async _waitForLinkComplete() {
139
+ const waitMs = async (ms) => await new Promise(resolve => setTimeout(resolve, ms));
140
+ const DELAY_MS = 10;
141
+ if (!this.device.features.has('compilation-status-async-webgl')) {
142
+ await waitMs(DELAY_MS);
143
+ return;
144
+ }
145
+ const { gl } = this.device;
146
+ for (;;) {
147
+ const complete = gl.getProgramParameter(this.handle, 37297);
148
+ if (complete) {
149
+ return;
150
+ }
151
+ await waitMs(DELAY_MS);
152
+ }
153
+ }
154
+ }
155
+ //# sourceMappingURL=webgl-shared-render-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-shared-render-pipeline.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shared-render-pipeline.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import type { Device, TextureProps, TextureViewProps, Sampler, SamplerProps, CopyExternalImageOptions, CopyImageDataOptions } from '@luma.gl/core';
2
- import { Texture } from '@luma.gl/core';
3
- import { GL, GLTextureTarget, GLTextureCubeMapTarget, GLTexelDataFormat, GLPixelType, GLSamplerParameters } from '@luma.gl/constants';
1
+ import { type Device, type TextureProps, type TextureViewProps, type Sampler, type SamplerProps, type CopyExternalImageOptions, type TextureReadOptions, type TextureWriteOptions, Buffer, Texture } from '@luma.gl/core';
2
+ import { GLSamplerParameters, GL, GLTextureTarget, GLTextureCubeMapTarget, GLTexelDataFormat, GLPixelType } from '@luma.gl/webgl/constants';
4
3
  import { WebGLDevice } from "../webgl-device.js";
4
+ import { WEBGLFramebuffer } from "./webgl-framebuffer.js";
5
5
  import { WEBGLSampler } from "./webgl-sampler.js";
6
6
  import { WEBGLTextureView } from "./webgl-texture-view.js";
7
7
  /**
@@ -33,15 +33,53 @@ export declare class WEBGLTexture extends Texture {
33
33
  compressed: boolean;
34
34
  /** Texture binding slot - TODO - move to texture view? */
35
35
  _textureUnit: number;
36
+ /** Cached framebuffer reused for color texture readback. */
37
+ _framebuffer: WEBGLFramebuffer | null;
38
+ /** Cache key for the currently attached readback subresource `${mipLevel}:${layer}`. */
39
+ _framebufferAttachmentKey: string | null;
36
40
  constructor(device: Device, props: TextureProps);
37
41
  destroy(): void;
38
42
  createView(props: TextureViewProps): WEBGLTextureView;
39
43
  setSampler(sampler?: Sampler | SamplerProps): void;
40
- copyImageData(options_: CopyImageDataOptions): void;
41
44
  copyExternalImage(options_: CopyExternalImageOptions): {
42
45
  width: number;
43
46
  height: number;
44
47
  };
48
+ copyImageData(options_: any): void;
49
+ /**
50
+ * Reads a color texture subresource into a GPU buffer using `PIXEL_PACK_BUFFER`.
51
+ *
52
+ * @note Only first-pass color readback is supported. Unsupported formats and aspects throw
53
+ * before any WebGL calls are issued.
54
+ */
55
+ readBuffer(options?: TextureReadOptions & {
56
+ byteOffset?: number;
57
+ }, buffer?: Buffer): Buffer;
58
+ readDataAsync(options?: TextureReadOptions): Promise<ArrayBuffer>;
59
+ writeBuffer(buffer: Buffer, options_?: TextureWriteOptions): void;
60
+ writeData(data: ArrayBuffer | SharedArrayBuffer | ArrayBufferView, options_?: TextureWriteOptions): void;
61
+ /** @todo - for now we always use 1 for maximum compatibility, we can fine tune later */
62
+ private _getRowByteAlignment;
63
+ /**
64
+ * Wraps a given texture into a framebuffer object, that can be further used
65
+ * to read data from the texture object.
66
+ */
67
+ _getFramebuffer(): WEBGLFramebuffer;
68
+ readDataSyncWebGL(options_?: TextureReadOptions): ArrayBuffer;
69
+ /**
70
+ * Iterates the requested mip/layer/slice range, reattaching the cached read framebuffer as
71
+ * needed before delegating the actual `readPixels()` call to the supplied callback.
72
+ */
73
+ private _readColorTextureLayers;
74
+ /**
75
+ * Attaches a single color subresource to the cached read framebuffer.
76
+ *
77
+ * @note Repeated attachments of the same `(mipLevel, layer)` tuple are skipped.
78
+ */
79
+ private _attachReadSubresource;
80
+ /**
81
+ * @note - this is used by the DynamicTexture class to generate mipmaps on WebGL
82
+ */
45
83
  generateMipmapsWebGL(options?: {
46
84
  force?: boolean;
47
85
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,wBAAwB,EACxB,oBAAoB,EAErB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,OAAO,EAAM,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,EAAE,EACF,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EAEX,mBAAmB,EAEpB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAC5C,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAC7C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD;;GAEG;AACH,qBAAa,YAAa,SAAQ,OAAO;IAEvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,MAAM,EAAE,YAAY,CAAC;IAGrB,OAAO,EAAE,YAAY,CAAa;IAClC,IAAI,EAAE,gBAAgB,CAAC;IAEvB;;;;;;;;OAQG;IACH,QAAQ,EAAE,eAAe,CAAC;IAC1B,uDAAuD;IACvD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,uDAAuD;IACvD,MAAM,EAAE,WAAW,CAAC;IACpB,8EAA8E;IAC9E,gBAAgB,EAAE,EAAE,CAAC;IACrB,gDAAgD;IAChD,UAAU,EAAE,OAAO,CAAC;IAGpB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAK;gBAEb,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;IAmDtC,OAAO,IAAI,IAAI;IAUxB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB;IAI5C,UAAU,CAAC,OAAO,GAAE,OAAO,GAAG,YAAiB,GAAG,IAAI;IAO/D,aAAa,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IA+DnD,iBAAiB,CAAC,QAAQ,EAAE,wBAAwB,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;IAyCtF,oBAAoB,CAAC,OAAO,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI;IAuBvD;;OAEG;IACH,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI;IA4C5D,cAAc,IAAI,MAAM;IAIxB,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAapC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAWnD;AAID,gFAAgF;AAChF,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,GACjE,eAAe,CAWjB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,EAClE,KAAK,EAAE,MAAM,GACZ,eAAe,GAAG,sBAAsB,CAE1C"}
1
+ {"version":3,"file":"webgl-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"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"}