@luma.gl/webgl 9.1.0-alpha.2 → 9.1.0-beta.1

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 (216) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts +3 -3
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +19 -11
  4. package/dist/adapter/converters/device-parameters.js.map +1 -0
  5. package/dist/adapter/converters/sampler-parameters.js +7 -4
  6. package/dist/adapter/converters/sampler-parameters.js.map +1 -0
  7. package/dist/adapter/converters/shader-formats.js +1 -0
  8. package/dist/adapter/converters/shader-formats.js.map +1 -0
  9. package/dist/adapter/converters/vertex-formats.js +1 -0
  10. package/dist/adapter/converters/vertex-formats.js.map +1 -0
  11. package/dist/adapter/converters/webgl-texture-table.d.ts +40 -0
  12. package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -0
  13. package/dist/adapter/converters/webgl-texture-table.js +304 -0
  14. package/dist/adapter/converters/webgl-texture-table.js.map +1 -0
  15. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  16. package/dist/adapter/device-helpers/webgl-device-features.js +2 -3
  17. package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -0
  18. package/dist/adapter/device-helpers/webgl-device-info.js +1 -0
  19. package/dist/adapter/device-helpers/webgl-device-info.js.map +1 -0
  20. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -0
  21. package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -0
  22. package/dist/adapter/helpers/decode-webgl-types.js +1 -0
  23. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
  24. package/dist/adapter/helpers/format-utils.d.ts.map +1 -0
  25. package/dist/{classic → adapter/helpers}/format-utils.js +7 -0
  26. package/dist/adapter/helpers/format-utils.js.map +1 -0
  27. package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
  28. package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
  29. package/dist/adapter/helpers/get-shader-layout.js +5 -4
  30. package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
  31. package/dist/adapter/helpers/parse-shader-compiler-log.js +1 -0
  32. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
  33. package/dist/adapter/helpers/set-uniform.js +1 -0
  34. package/dist/adapter/helpers/set-uniform.js.map +1 -0
  35. package/dist/adapter/helpers/typed-array-utils.d.ts.map +1 -0
  36. package/dist/{classic → adapter/helpers}/typed-array-utils.js +1 -0
  37. package/dist/adapter/helpers/typed-array-utils.js.map +1 -0
  38. package/dist/adapter/helpers/webgl-texture-utils.d.ts +100 -29
  39. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
  40. package/dist/adapter/helpers/webgl-texture-utils.js +231 -240
  41. package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -0
  42. package/dist/adapter/helpers/webgl-topology-utils.js +1 -0
  43. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
  44. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgl-buffer.js +4 -1
  46. package/dist/adapter/resources/webgl-buffer.js.map +1 -0
  47. package/dist/adapter/resources/webgl-command-buffer.d.ts +59 -2
  48. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  49. package/dist/adapter/resources/webgl-command-buffer.js +89 -32
  50. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
  51. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  52. package/dist/adapter/resources/webgl-command-encoder.js +4 -0
  53. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
  54. package/dist/adapter/resources/webgl-external-texture.js +15 -0
  55. package/dist/adapter/resources/webgl-external-texture.js.map +1 -0
  56. package/dist/adapter/resources/webgl-framebuffer.d.ts +33 -35
  57. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  58. package/dist/adapter/resources/webgl-framebuffer.js +71 -76
  59. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
  60. package/dist/adapter/resources/webgl-query-set.js +1 -0
  61. package/dist/adapter/resources/webgl-query-set.js.map +1 -0
  62. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  63. package/dist/adapter/resources/webgl-render-pass.js +49 -21
  64. package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
  65. package/dist/adapter/resources/webgl-render-pipeline.d.ts +3 -4
  66. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  67. package/dist/adapter/resources/webgl-render-pipeline.js +45 -23
  68. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
  69. package/dist/adapter/resources/webgl-sampler.js +1 -0
  70. package/dist/adapter/resources/webgl-sampler.js.map +1 -0
  71. package/dist/adapter/resources/webgl-shader.d.ts +1 -0
  72. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-shader.js +13 -6
  74. package/dist/adapter/resources/webgl-shader.js.map +1 -0
  75. package/dist/adapter/resources/webgl-texture-view.js +1 -0
  76. package/dist/adapter/resources/webgl-texture-view.js.map +1 -0
  77. package/dist/adapter/resources/webgl-texture.d.ts +33 -21
  78. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  79. package/dist/adapter/resources/webgl-texture.js +172 -242
  80. package/dist/adapter/resources/webgl-texture.js.map +1 -0
  81. package/dist/adapter/resources/webgl-transform-feedback.js +1 -0
  82. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
  83. package/dist/adapter/resources/webgl-vertex-array.js +1 -0
  84. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
  85. package/dist/adapter/webgl-adapter.d.ts +21 -0
  86. package/dist/adapter/webgl-adapter.d.ts.map +1 -0
  87. package/dist/adapter/webgl-adapter.js +86 -0
  88. package/dist/adapter/webgl-adapter.js.map +1 -0
  89. package/dist/adapter/webgl-canvas-context.d.ts +4 -6
  90. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  91. package/dist/adapter/webgl-canvas-context.js +13 -17
  92. package/dist/adapter/webgl-canvas-context.js.map +1 -0
  93. package/dist/adapter/webgl-device.d.ts +35 -46
  94. package/dist/adapter/webgl-device.d.ts.map +1 -1
  95. package/dist/adapter/webgl-device.js +100 -156
  96. package/dist/adapter/webgl-device.js.map +1 -0
  97. package/dist/context/debug/spector-types.d.ts +1108 -0
  98. package/dist/context/debug/spector-types.d.ts.map +1 -0
  99. package/dist/context/debug/spector-types.js +698 -0
  100. package/dist/context/debug/spector-types.js.map +1 -0
  101. package/dist/context/debug/spector.d.ts +12 -8
  102. package/dist/context/debug/spector.d.ts.map +1 -1
  103. package/dist/context/debug/spector.js +24 -17
  104. package/dist/context/debug/spector.js.map +1 -0
  105. package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
  106. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  107. package/dist/context/debug/webgl-developer-tools.js +7 -19
  108. package/dist/context/debug/webgl-developer-tools.js.map +1 -0
  109. package/dist/context/helpers/create-browser-context.d.ts +6 -22
  110. package/dist/context/helpers/create-browser-context.d.ts.map +1 -1
  111. package/dist/context/helpers/create-browser-context.js +41 -32
  112. package/dist/context/helpers/create-browser-context.js.map +1 -0
  113. package/dist/context/helpers/webgl-context-data.js +1 -0
  114. package/dist/context/helpers/webgl-context-data.js.map +1 -0
  115. package/dist/context/helpers/webgl-extensions.js +1 -0
  116. package/dist/context/helpers/webgl-extensions.js.map +1 -0
  117. package/dist/context/parameters/unified-parameter-api.js +1 -0
  118. package/dist/context/parameters/unified-parameter-api.js.map +1 -0
  119. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  120. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  121. package/dist/context/parameters/webgl-parameter-tables.js +3 -2
  122. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
  123. package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts +9 -0
  124. package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts.map +1 -0
  125. package/dist/context/polyfills/polyfill-webgl1-extensions.js +182 -0
  126. package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -0
  127. package/dist/context/state-tracker/deep-array-equal.js +1 -0
  128. package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
  129. package/dist/context/state-tracker/webgl-state-tracker.d.ts +43 -0
  130. package/dist/context/state-tracker/webgl-state-tracker.d.ts.map +1 -0
  131. package/dist/context/state-tracker/{track-context-state.js → webgl-state-tracker.js} +45 -74
  132. package/dist/context/state-tracker/webgl-state-tracker.js.map +1 -0
  133. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  134. package/dist/context/state-tracker/with-parameters.js +6 -4
  135. package/dist/context/state-tracker/with-parameters.js.map +1 -0
  136. package/dist/deprecated/accessor.d.ts.map +1 -0
  137. package/dist/{classic → deprecated}/accessor.js +37 -1
  138. package/dist/deprecated/accessor.js.map +1 -0
  139. package/dist/dist.dev.js +2397 -2430
  140. package/dist/dist.min.js +2 -2
  141. package/dist/index.cjs +2273 -2298
  142. package/dist/index.cjs.map +4 -4
  143. package/dist/index.d.ts +5 -4
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/index.js +6 -6
  146. package/dist/index.js.map +1 -0
  147. package/dist/types.js +1 -0
  148. package/dist/types.js.map +1 -0
  149. package/dist/utils/fill-array.d.ts +4 -4
  150. package/dist/utils/fill-array.d.ts.map +1 -1
  151. package/dist/utils/fill-array.js +1 -0
  152. package/dist/utils/fill-array.js.map +1 -0
  153. package/dist/utils/load-script.js +1 -0
  154. package/dist/utils/load-script.js.map +1 -0
  155. package/dist/utils/split-uniforms-and-bindings.d.ts +1 -1
  156. package/dist/utils/split-uniforms-and-bindings.d.ts.map +1 -1
  157. package/dist/utils/split-uniforms-and-bindings.js +1 -0
  158. package/dist/utils/split-uniforms-and-bindings.js.map +1 -0
  159. package/dist/utils/uid.d.ts +7 -0
  160. package/dist/utils/uid.d.ts.map +1 -0
  161. package/dist/utils/uid.js +15 -0
  162. package/dist/utils/uid.js.map +1 -0
  163. package/package.json +5 -5
  164. package/src/adapter/converters/device-parameters.ts +21 -15
  165. package/src/adapter/converters/sampler-parameters.ts +6 -4
  166. package/src/adapter/converters/webgl-texture-table.ts +404 -0
  167. package/src/adapter/device-helpers/webgl-device-features.ts +5 -3
  168. package/src/{classic → adapter/helpers}/format-utils.ts +6 -0
  169. package/src/adapter/helpers/get-shader-layout.ts +7 -4
  170. package/src/adapter/helpers/webgl-texture-utils.ts +410 -64
  171. package/src/adapter/resources/webgl-buffer.ts +3 -1
  172. package/src/adapter/resources/webgl-command-buffer.ts +125 -41
  173. package/src/adapter/resources/webgl-command-encoder.ts +6 -0
  174. package/src/adapter/resources/webgl-external-texture.ts +14 -0
  175. package/src/adapter/resources/webgl-framebuffer.ts +80 -86
  176. package/src/adapter/resources/webgl-render-pass.ts +72 -45
  177. package/src/adapter/resources/webgl-render-pipeline.ts +58 -27
  178. package/src/adapter/resources/webgl-shader.ts +15 -7
  179. package/src/adapter/resources/webgl-texture.ts +202 -274
  180. package/src/adapter/webgl-adapter.ts +105 -0
  181. package/src/adapter/webgl-canvas-context.ts +16 -19
  182. package/src/adapter/webgl-device.ts +144 -210
  183. package/src/context/debug/spector-types.ts +1154 -0
  184. package/src/context/debug/spector.ts +38 -29
  185. package/src/context/debug/webgl-developer-tools.ts +8 -31
  186. package/src/context/helpers/create-browser-context.ts +53 -63
  187. package/src/context/parameters/webgl-parameter-tables.ts +2 -2
  188. package/src/context/polyfills/polyfill-webgl1-extensions.ts +202 -0
  189. package/src/context/state-tracker/{track-context-state.ts → webgl-state-tracker.ts} +55 -94
  190. package/src/context/state-tracker/with-parameters.ts +5 -4
  191. package/src/{classic → deprecated}/accessor.ts +44 -3
  192. package/src/index.ts +7 -12
  193. package/src/utils/fill-array.ts +4 -4
  194. package/src/utils/split-uniforms-and-bindings.ts +3 -3
  195. package/src/utils/uid.ts +16 -0
  196. package/dist/adapter/converters/texture-formats.d.ts +0 -83
  197. package/dist/adapter/converters/texture-formats.d.ts.map +0 -1
  198. package/dist/adapter/converters/texture-formats.js +0 -518
  199. package/dist/classic/accessor.d.ts.map +0 -1
  200. package/dist/classic/clear.d.ts +0 -22
  201. package/dist/classic/clear.d.ts.map +0 -1
  202. package/dist/classic/clear.js +0 -86
  203. package/dist/classic/copy-and-blit.d.ts +0 -63
  204. package/dist/classic/copy-and-blit.d.ts.map +0 -1
  205. package/dist/classic/copy-and-blit.js +0 -193
  206. package/dist/classic/format-utils.d.ts.map +0 -1
  207. package/dist/classic/typed-array-utils.d.ts.map +0 -1
  208. package/dist/context/state-tracker/track-context-state.d.ts +0 -22
  209. package/dist/context/state-tracker/track-context-state.d.ts.map +0 -1
  210. package/src/adapter/converters/texture-formats.ts +0 -665
  211. package/src/classic/clear.ts +0 -115
  212. package/src/classic/copy-and-blit.ts +0 -318
  213. /package/dist/{classic → adapter/helpers}/format-utils.d.ts +0 -0
  214. /package/dist/{classic → adapter/helpers}/typed-array-utils.d.ts +0 -0
  215. /package/dist/{classic → deprecated}/accessor.d.ts +0 -0
  216. /package/src/{classic → adapter/helpers}/typed-array-utils.ts +0 -0
@@ -3,8 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { Framebuffer } from '@luma.gl/core';
5
5
  import { GL } from '@luma.gl/constants';
6
- import { WEBGLTexture } from "./webgl-texture.js";
7
- import { getDepthStencilAttachmentWebGL } from "../converters/texture-formats.js";
6
+ import { getDepthStencilAttachmentWebGL } from "../converters/webgl-texture-table.js";
8
7
  /** luma.gl Framebuffer, WebGL implementation */
9
8
  export class WEBGLFramebuffer extends Framebuffer {
10
9
  device;
@@ -21,33 +20,11 @@ export class WEBGLFramebuffer extends Framebuffer {
21
20
  this.handle =
22
21
  this.props.handle || isDefaultFramebuffer ? this.props.handle : this.gl.createFramebuffer();
23
22
  if (!isDefaultFramebuffer) {
24
- // default framebuffer handle is null, so we can't set spector metadata...
25
- device.setSpectorMetadata(this.handle, { id: this.props.id, props: this.props });
23
+ // default framebuffer handle is null, so we can't set debug metadata...
24
+ device._setWebGLDebugMetadata(this.handle, this, { spector: this.props });
26
25
  // Auto create textures for attachments if needed
27
26
  this.autoCreateAttachmentTextures();
28
- /** Attach from a map of attachments */
29
- // @ts-expect-error native bindFramebuffer is overridden by our state tracker
30
- const prevHandle = this.gl.bindFramebuffer(36160, this.handle);
31
- // Walk the attachments
32
- for (let i = 0; i < this.colorAttachments.length; ++i) {
33
- const attachment = this.colorAttachments[i];
34
- const attachmentPoint = 36064 + i;
35
- if (attachment) {
36
- this._attachTexture(attachmentPoint, attachment);
37
- }
38
- }
39
- if (this.depthStencilAttachment) {
40
- this._attachTexture(getDepthStencilAttachmentWebGL(this.depthStencilAttachment.props.format), this.depthStencilAttachment);
41
- }
42
- /** Check the status */
43
- // @ts-expect-error
44
- if (props.check !== false) {
45
- const status = this.gl.checkFramebufferStatus(36160);
46
- if (status !== 36053) {
47
- throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);
48
- }
49
- }
50
- this.gl.bindFramebuffer(36160, prevHandle);
27
+ this.updateAttachments();
51
28
  }
52
29
  }
53
30
  /** destroys any auto created resources etc. */
@@ -58,56 +35,43 @@ export class WEBGLFramebuffer extends Framebuffer {
58
35
  // this.handle = null;
59
36
  }
60
37
  }
38
+ updateAttachments() {
39
+ /** Attach from a map of attachments */
40
+ // @ts-expect-error native bindFramebuffer is overridden by our state tracker
41
+ const prevHandle = this.gl.bindFramebuffer(36160, this.handle);
42
+ // Walk the attachments
43
+ for (let i = 0; i < this.colorAttachments.length; ++i) {
44
+ const attachment = this.colorAttachments[i];
45
+ if (attachment) {
46
+ const attachmentPoint = 36064 + i;
47
+ this._attachTextureView(attachmentPoint, attachment);
48
+ }
49
+ }
50
+ if (this.depthStencilAttachment) {
51
+ const attachmentPoint = getDepthStencilAttachmentWebGL(this.depthStencilAttachment.props.format);
52
+ this._attachTextureView(attachmentPoint, this.depthStencilAttachment);
53
+ }
54
+ /** Check the status */
55
+ if (this.device.props.debug) {
56
+ const status = this.gl.checkFramebufferStatus(36160);
57
+ if (status !== 36053) {
58
+ throw new Error(`Framebuffer ${_getFrameBufferStatus(status)}`);
59
+ }
60
+ }
61
+ this.gl.bindFramebuffer(36160, prevHandle);
62
+ }
61
63
  // PRIVATE
62
64
  /** In WebGL we must use renderbuffers for depth/stencil attachments (unless we have extensions) */
63
- createDepthStencilTexture(format) {
64
- // return new WEBGLRenderbuffer(this.device, {
65
- return new WEBGLTexture(this.device, {
66
- id: `${this.id}-depth-stencil`,
67
- format,
68
- width: this.width,
69
- height: this.height,
70
- mipmaps: false
71
- });
72
- }
73
- /**
74
- * Attachment resize is expected to be a noop if size is same
75
- *
76
- protected override resizeAttachments(width: number, height: number): this {
77
- // for default framebuffer, just update the stored size
78
- if (this.handle === null) {
79
- // assert(width === undefined && height === undefined);
80
- this.width = this.gl.drawingBufferWidth;
81
- this.height = this.gl.drawingBufferHeight;
82
- return this;
83
- }
84
-
85
- if (width === undefined) {
86
- width = this.gl.drawingBufferWidth;
87
- }
88
- if (height === undefined) {
89
- height = this.gl.drawingBufferHeight;
90
- }
91
-
92
- // TODO Not clear that this is better than default destroy/create implementation
93
-
94
- for (const colorAttachment of this.colorAttachments) {
95
- colorAttachment.texture.clone({width, height});
96
- }
97
- if (this.depthStencilAttachment) {
98
- this.depthStencilAttachment.texture.resize({width, height});
99
- }
100
- return this;
101
- }
102
- */
103
- /** Attach one attachment */
104
- _attachTexture(attachmentPoint, textureView) {
105
- // if (attachment instanceof WEBGLRenderbuffer) {
106
- // this._attachWEBGLRenderbuffer(attachmentPoint, attachment);
107
- // return attachment;
108
- // }
109
- this._attachTextureView(attachmentPoint, textureView);
110
- }
65
+ // protected override createDepthStencilTexture(format: TextureFormat): Texture {
66
+ // // return new WEBGLRenderbuffer(this.device, {
67
+ // return new WEBGLTexture(this.device, {
68
+ // id: `${this.id}-depth-stencil`,
69
+ // format,
70
+ // width: this.width,
71
+ // height: this.height,
72
+ // mipmaps: false
73
+ // });
74
+ // }
111
75
  /**
112
76
  * @param attachment
113
77
  * @param texture
@@ -123,7 +87,7 @@ export class WEBGLFramebuffer extends Framebuffer {
123
87
  switch (texture.glTarget) {
124
88
  case 35866:
125
89
  case 32879:
126
- gl.framebufferTextureLayer(36160, attachment, texture.glTarget, level, layer);
90
+ gl.framebufferTextureLayer(36160, attachment, texture.handle, level, layer);
127
91
  break;
128
92
  case 34067:
129
93
  // layer must be a cubemap face (or if index, converted to cube map face)
@@ -171,3 +135,34 @@ function _getFrameBufferStatus(status) {
171
135
  return `${status}`;
172
136
  }
173
137
  }
138
+ /**
139
+ * Attachment resize is expected to be a noop if size is same
140
+ *
141
+ protected override resizeAttachments(width: number, height: number): this {
142
+ // for default framebuffer, just update the stored size
143
+ if (this.handle === null) {
144
+ // assert(width === undefined && height === undefined);
145
+ this.width = this.gl.drawingBufferWidth;
146
+ this.height = this.gl.drawingBufferHeight;
147
+ return this;
148
+ }
149
+
150
+ if (width === undefined) {
151
+ width = this.gl.drawingBufferWidth;
152
+ }
153
+ if (height === undefined) {
154
+ height = this.gl.drawingBufferHeight;
155
+ }
156
+
157
+ // TODO Not clear that this is better than default destroy/create implementation
158
+
159
+ for (const colorAttachment of this.colorAttachments) {
160
+ colorAttachment.texture.clone({width, height});
161
+ }
162
+ if (this.depthStencilAttachment) {
163
+ this.depthStencilAttachment.texture.resize({width, height});
164
+ }
165
+ return this;
166
+ }
167
+ */
168
+ //# sourceMappingURL=webgl-framebuffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-framebuffer.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-framebuffer.ts"],"names":[],"mappings":"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"}
@@ -134,3 +134,4 @@ export class WEBGLQuerySet extends QuerySet {
134
134
  return this._pollingPromise;
135
135
  }
136
136
  }
137
+ //# sourceMappingURL=webgl-query-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-query-set.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-query-set.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pass.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAChF,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAC5C,OAAO,EAAK,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAcpD,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;gBAEf,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe;IAYvD,GAAG,IAAI,IAAI;IAKX,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa,IAAI,IAAI;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAO5C;;OAEG;IACH,aAAa,CAAC,UAAU,GAAE,oBAAyB,GAAG,IAAI;IAmD1D,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpC,iBAAiB,IAAI,IAAI;IAOlC;;OAEG;IACH,SAAS,CAAC,KAAK,IAAI,IAAI;IA+BvB;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,GAAE,MAAU,EAAE,KAAK,GAAE,YAA2B;CAwCtF"}
1
+ {"version":3,"file":"webgl-render-pass.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAe,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAChF,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAC5C,OAAO,EAAK,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAQpD,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,8DAA8D;IAC9D,YAAY,EAAE,YAAY,CAAC;gBAEf,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe;IAsCvD,GAAG,IAAI,IAAI;IAKX,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa,IAAI,IAAI;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAO5C;;OAEG;IACH,aAAa,CAAC,UAAU,GAAE,oBAAyB,GAAG,IAAI;IAmD1D,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpC,iBAAiB,IAAI,IAAI;IAOlC;;OAEG;IACH,SAAS,CAAC,KAAK,IAAI,IAAI;IAkCvB;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,UAAU,GAAE,MAAU,EAAE,KAAK,GAAE,YAA2B;CA4CtF"}
@@ -5,12 +5,6 @@ import { RenderPass } from '@luma.gl/core';
5
5
  import { GL } from '@luma.gl/constants';
6
6
  import { withGLParameters } from "../../context/state-tracker/with-parameters.js";
7
7
  import { setGLParameters } from "../../context/parameters/unified-parameter-api.js";
8
- import { pushContextState, popContextState } from "../../context/state-tracker/track-context-state.js";
9
- // Should collapse during minification
10
- const GL_DEPTH_BUFFER_BIT = 0x00000100;
11
- const GL_STENCIL_BUFFER_BIT = 0x00000400;
12
- const GL_COLOR_BUFFER_BIT = 0x00004000;
13
- const GL_COLOR = 0x1800;
14
8
  const COLOR_CHANNELS = [0x1, 0x2, 0x4, 0x8]; // GPUColorWrite RED, GREEN, BLUE, ALPHA
15
9
  export class WEBGLRenderPass extends RenderPass {
16
10
  device;
@@ -19,14 +13,38 @@ export class WEBGLRenderPass extends RenderPass {
19
13
  constructor(device, props) {
20
14
  super(device, props);
21
15
  this.device = device;
16
+ // If no viewport is provided, apply reasonably defaults
17
+ let viewport;
18
+ if (!props?.parameters?.viewport) {
19
+ if (props?.framebuffer) {
20
+ // Set the viewport to the size of the framebuffer
21
+ const { width, height } = props.framebuffer;
22
+ viewport = [0, 0, width, height];
23
+ }
24
+ else {
25
+ // Instead of using our own book-keeping, we can just read the values from the WebGL context
26
+ const [width, height] = device.getDefaultCanvasContext().getDrawingBufferSize();
27
+ viewport = [0, 0, width, height];
28
+ }
29
+ }
22
30
  // TODO - do parameters (scissorRect) affect the clear operation?
23
- pushContextState(this.device.gl);
24
- this.setParameters(this.props.parameters);
31
+ this.device.pushState();
32
+ this.setParameters({ viewport, ...this.props.parameters });
33
+ // Specify mapping of draw buffer locations to color attachments
34
+ const webglFramebuffer = this.props.framebuffer;
35
+ // Default framebuffers can only be set to GL.BACK or GL.NONE
36
+ if (webglFramebuffer?.handle) {
37
+ const drawBuffers = this.props.framebuffer.colorAttachments.map((_, i) => 36064 + i);
38
+ this.device.gl.drawBuffers(drawBuffers);
39
+ }
40
+ else {
41
+ this.device.gl.drawBuffers([1029]);
42
+ }
25
43
  // Hack - for now WebGL draws in "immediate mode" (instead of queueing the operations)...
26
44
  this.clear();
27
45
  }
28
46
  end() {
29
- popContextState(this.device.gl);
47
+ this.device.popState();
30
48
  // should add commands to CommandEncoder.
31
49
  }
32
50
  pushDebugGroup(groupLabel) { }
@@ -94,16 +112,23 @@ export class WEBGLRenderPass extends RenderPass {
94
112
  clear() {
95
113
  const glParameters = { ...this.glParameters };
96
114
  let clearMask = 0;
97
- if (this.props.clearColor !== false) {
98
- clearMask |= GL_COLOR_BUFFER_BIT;
115
+ if (this.props.clearColors) {
116
+ this.props.clearColors.forEach((color, drawBufferIndex) => {
117
+ if (color) {
118
+ this.clearColorBuffer(drawBufferIndex, color);
119
+ }
120
+ });
121
+ }
122
+ if (this.props.clearColor !== false && this.props.clearColors === undefined) {
123
+ clearMask |= 16384;
99
124
  glParameters.clearColor = this.props.clearColor;
100
125
  }
101
126
  if (this.props.clearDepth !== false) {
102
- clearMask |= GL_DEPTH_BUFFER_BIT;
127
+ clearMask |= 256;
103
128
  glParameters.clearDepth = this.props.clearDepth;
104
129
  }
105
130
  if (this.props.clearStencil !== false) {
106
- clearMask |= GL_STENCIL_BUFFER_BIT;
131
+ clearMask |= 1024;
107
132
  glParameters.clearStencil = this.props.clearStencil;
108
133
  }
109
134
  if (clearMask !== 0) {
@@ -111,10 +136,6 @@ export class WEBGLRenderPass extends RenderPass {
111
136
  withGLParameters(this.device.gl, glParameters, () => {
112
137
  this.device.gl.clear(clearMask);
113
138
  });
114
- // TODO - clear multiple color attachments
115
- // for (attachment of this.framebuffer.colorAttachments) {
116
- // this.clearColorBuffer
117
- // }
118
139
  }
119
140
  }
120
141
  /**
@@ -124,17 +145,24 @@ export class WEBGLRenderPass extends RenderPass {
124
145
  withGLParameters(this.device.gl, { framebuffer: this.props.framebuffer }, () => {
125
146
  // Method selection per OpenGL ES 3 docs
126
147
  switch (value.constructor) {
148
+ case Int8Array:
149
+ case Int16Array:
127
150
  case Int32Array:
128
- this.device.gl.clearBufferiv(GL_COLOR, drawBuffer, value);
151
+ this.device.gl.clearBufferiv(6144, drawBuffer, value);
129
152
  break;
153
+ case Uint8Array:
154
+ case Uint8ClampedArray:
155
+ case Uint16Array:
130
156
  case Uint32Array:
131
- this.device.gl.clearBufferuiv(GL_COLOR, drawBuffer, value);
157
+ this.device.gl.clearBufferuiv(6144, drawBuffer, value);
132
158
  break;
133
159
  case Float32Array:
134
- default:
135
- this.device.gl.clearBufferfv(GL_COLOR, drawBuffer, value);
160
+ this.device.gl.clearBufferfv(6144, drawBuffer, value);
136
161
  break;
162
+ default:
163
+ throw new Error('clearColorBuffer: color must be typed array');
137
164
  }
138
165
  });
139
166
  }
140
167
  }
168
+ //# sourceMappingURL=webgl-render-pass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-render-pass.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
- import type { RenderPipelineProps, RenderPipelineParameters, PrimitiveTopology } from '@luma.gl/core';
2
- import type { ShaderLayout, UniformValue, Binding } from '@luma.gl/core';
3
- import type { RenderPass, VertexArray } from '@luma.gl/core';
1
+ import type { RenderPipelineProps, RenderPipelineParameters, PrimitiveTopology, ShaderLayout, UniformValue, Binding, RenderPass, VertexArray } from '@luma.gl/core';
4
2
  import { RenderPipeline } from '@luma.gl/core';
5
3
  import { WebGLDevice } from "../webgl-device.js";
6
4
  import { WEBGLShader } from "./webgl-shader.js";
@@ -25,6 +23,7 @@ export declare class WEBGLRenderPipeline extends RenderPipeline {
25
23
  varyings: string[] | null;
26
24
  _uniformCount: number;
27
25
  _uniformSetters: Record<string, Function>;
26
+ get [Symbol.toStringTag](): string;
28
27
  constructor(device: WebGLDevice, props: RenderPipelineProps);
29
28
  destroy(): void;
30
29
  /**
@@ -56,7 +55,7 @@ export declare class WEBGLRenderPipeline extends RenderPipeline {
56
55
  setUniformsWebGL(uniforms: Record<string, UniformValue>): void;
57
56
  protected _linkShaders(): Promise<void>;
58
57
  /** Report link status. First, check for shader compilation failures if linking fails */
59
- _reportLinkStatus(status: 'success' | 'linking' | 'validation'): void;
58
+ _reportLinkStatus(status: 'success' | 'linking' | 'validation'): Promise<void>;
60
59
  /**
61
60
  * Get the shader compilation status
62
61
  * TODO - Load log even when no error reported, to catch warnings?
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,mBAAmB,EAAE,wBAAwB,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AACpG,OAAO,KAAK,EAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,EAAC,UAAU,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,cAAc,EAAM,MAAM,eAAe,CAAC;AAUlD,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAK3C,OAAO,EAAC,sBAAsB,EAAC,sCAAmC;AAKlE,oCAAoC;AACpC,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,yDAAyD;IACzD,MAAM,EAAE,WAAW,CAAC;IACpB,yCAAyC;IACzC,MAAM,EAAE,YAAY,CAAC;IACrB,oBAAoB;IACpB,EAAE,EAAE,WAAW,CAAC;IAChB,sBAAsB;IACtB,EAAE,EAAE,WAAW,CAAC;IAChB,mEAAmE;IACnE,kBAAkB,EAAE,YAAY,CAAC;IAEjC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAM;IAC5C,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACvC,qBAAqB;IACrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAEjC,aAAa,EAAE,MAAM,CAAK;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;gBAEnC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IA8BlD,OAAO,IAAI,IAAI;IAQxB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI;IAyD3F;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,UAAU,CAAC;QACvB,UAAU,CAAC,EAAE,wBAAwB,CAAC;QACtC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;QAC7B,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;KAC5C,GAAG,OAAO;IAgGF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;cAkBhD,YAAY;IA2B5B,wFAAwF;IACxF,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY;IAmB9D;;;;OAIG;IACH,cAAc,IAAI,SAAS,GAAG,SAAS,GAAG,YAAY;IAmBtD,6DAA6D;IACvD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3C;;;;OAIG;IACH,sBAAsB;IAsBtB,iDAAiD;IACjD,cAAc;IAyFd;;;OAGG;IACH,cAAc;CASf"}
1
+ {"version":3,"file":"webgl-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,cAAc,EAAM,MAAM,eAAe,CAAC;AAUlD,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAK3C,OAAO,EAAC,sBAAsB,EAAC,sCAAmC;AAKlE,oCAAoC;AACpC,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,yDAAyD;IACzD,MAAM,EAAE,WAAW,CAAC;IACpB,yCAAyC;IACzC,MAAM,EAAE,YAAY,CAAC;IACrB,oBAAoB;IACpB,EAAE,EAAE,WAAW,CAAC;IAChB,sBAAsB;IACtB,EAAE,EAAE,WAAW,CAAC;IAChB,mEAAmE;IACnE,kBAAkB,EAAE,YAAY,CAAC;IAEjC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAM;IAC5C,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACvC,qBAAqB;IACrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAEjC,aAAa,EAAE,MAAM,CAAK;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;IAE/C,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,WAEhC;gBAEW,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IA6BlD,OAAO,IAAI,IAAI;IAYxB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI;IA0D3F;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,UAAU,CAAC;QACvB,UAAU,CAAC,EAAE,wBAAwB,CAAC;QACtC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;QAC7B,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;KAC5C,GAAG,OAAO;IAgGF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;cAkBhD,YAAY;IA2B5B,wFAAwF;IAClF,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCpF;;;;OAIG;IACH,cAAc,IAAI,SAAS,GAAG,SAAS,GAAG,YAAY;IAmBtD,6DAA6D;IACvD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3C;;;;OAIG;IACH,sBAAsB;IAuBtB,iDAAiD;IACjD,cAAc;IAyFd;;;OAGG;IACH,cAAc;CASf"}
@@ -4,7 +4,7 @@
4
4
  import { RenderPipeline, log } from '@luma.gl/core';
5
5
  // import {getAttributeInfosFromLayouts} from '@luma.gl/core';
6
6
  import { GL } from '@luma.gl/constants';
7
- import { getShaderLayout } from "../helpers/get-shader-layout.js";
7
+ import { getShaderLayoutFromGLSL } from "../helpers/get-shader-layout.js";
8
8
  import { withDeviceAndGLParameters } from "../converters/device-parameters.js";
9
9
  import { setUniform } from "../helpers/set-uniform.js";
10
10
  import { splitUniformsAndBindings } from "../../utils/split-uniforms-and-bindings.js";
@@ -34,11 +34,14 @@ export class WEBGLRenderPipeline extends RenderPipeline {
34
34
  varyings = null;
35
35
  _uniformCount = 0;
36
36
  _uniformSetters = {}; // TODO are these used?
37
+ get [Symbol.toStringTag]() {
38
+ return 'WEBGLRenderPipeline';
39
+ }
37
40
  constructor(device, props) {
38
41
  super(device, props);
39
42
  this.device = device;
40
43
  this.handle = this.props.handle || this.device.gl.createProgram();
41
- this.device.setSpectorMetadata(this.handle, { id: this.props.id });
44
+ this.device._setWebGLDebugMetadata(this.handle, this, { spector: { id: this.props.id } });
42
45
  // Create shaders if needed
43
46
  this.vs = props.vs;
44
47
  this.fs = props.fs;
@@ -52,17 +55,21 @@ export class WEBGLRenderPipeline extends RenderPipeline {
52
55
  this.device.gl.transformFeedbackVaryings(this.handle, varyings, bufferMode);
53
56
  }
54
57
  this._linkShaders();
55
- log.time(1, `RenderPipeline ${this.id} - shaderLayout introspection`)();
56
- this.introspectedLayout = getShaderLayout(this.device.gl, this.handle);
57
- log.timeEnd(1, `RenderPipeline ${this.id} - shaderLayout introspection`)();
58
+ log.time(3, `RenderPipeline ${this.id} - shaderLayout introspection`)();
59
+ this.introspectedLayout = getShaderLayoutFromGLSL(this.device.gl, this.handle);
60
+ log.timeEnd(3, `RenderPipeline ${this.id} - shaderLayout introspection`)();
58
61
  // Merge provided layout with introspected layout
59
62
  this.shaderLayout = mergeShaderLayout(this.introspectedLayout, props.shaderLayout);
60
63
  }
61
64
  destroy() {
62
65
  if (this.handle) {
66
+ // log.error(`Deleting program ${this.id}`)();
67
+ this.device.gl.useProgram(null);
63
68
  this.device.gl.deleteProgram(this.handle);
64
- // this.handle = null;
65
69
  this.destroyed = true;
70
+ // @ts-expect-error
71
+ this.handle.destroyed = true;
72
+ this.handle = null;
66
73
  }
67
74
  }
68
75
  /**
@@ -78,14 +85,14 @@ export class WEBGLRenderPipeline extends RenderPipeline {
78
85
  // This convention allows shaders to name uniform blocks as `uniform appUniforms {} app;`
79
86
  // and reference them as `app` from both GLSL and JS.
80
87
  // TODO - this is rather hacky - we could also remap the name directly in the shader layout.
81
- const binding = this.shaderLayout.bindings.find(binding => binding.name === name) ||
82
- this.shaderLayout.bindings.find(binding => binding.name === `${name}Uniforms`);
88
+ const binding = this.shaderLayout.bindings.find(binding_ => binding_.name === name) ||
89
+ this.shaderLayout.bindings.find(binding_ => binding_.name === `${name}Uniforms`);
83
90
  if (!binding) {
84
91
  const validBindings = this.shaderLayout.bindings
85
- .map(binding => `"${binding.name}"`)
92
+ .map(binding_ => `"${binding_.name}"`)
86
93
  .join(', ');
87
94
  if (!options?.disableWarnings) {
88
- log.warn(`Unknown binding "${name}" in render pipeline "${this.id}", expected one of ${validBindings}`)();
95
+ log.warn(`No binding "${name}" in render pipeline "${this.id}", expected one of ${validBindings}`, value)();
89
96
  }
90
97
  continue; // eslint-disable-line no-continue
91
98
  }
@@ -220,21 +227,34 @@ export class WEBGLRenderPipeline extends RenderPipeline {
220
227
  this._reportLinkStatus(status);
221
228
  }
222
229
  /** Report link status. First, check for shader compilation failures if linking fails */
223
- _reportLinkStatus(status) {
230
+ async _reportLinkStatus(status) {
224
231
  switch (status) {
225
232
  case 'success':
226
233
  return;
227
234
  default:
228
235
  // First check for shader compilation failures if linking fails
229
- if (this.vs.compilationStatus === 'error') {
230
- this.vs.debugShader();
231
- throw new Error(`Error during compilation of shader ${this.vs.id}`);
236
+ switch (this.vs.compilationStatus) {
237
+ case 'error':
238
+ this.vs.debugShader();
239
+ throw new Error(`Error during compilation of shader ${this.vs.id}`);
240
+ case 'pending':
241
+ this.vs.asyncCompilationStatus.then(() => this.vs.debugShader());
242
+ break;
243
+ case 'success':
244
+ break;
232
245
  }
233
- if (this.fs?.compilationStatus === 'error') {
234
- this.fs.debugShader();
235
- throw new Error(`Error during compilation of shader ${this.fs.id}`);
246
+ switch (this.fs?.compilationStatus) {
247
+ case 'error':
248
+ this.fs.debugShader();
249
+ throw new Error(`Error during compilation of shader ${this.fs.id}`);
250
+ case 'pending':
251
+ this.fs.asyncCompilationStatus.then(() => this.fs.debugShader());
252
+ break;
253
+ case 'success':
254
+ break;
236
255
  }
237
- throw new Error(`Error during ${status}: ${this.device.gl.getProgramInfoLog(this.handle)}`);
256
+ const linkErrorLog = this.device.gl.getProgramInfoLog(this.handle);
257
+ throw new Error(`Error during ${status}: ${linkErrorLog}`);
238
258
  }
239
259
  }
240
260
  /**
@@ -290,11 +310,12 @@ export class WEBGLRenderPipeline extends RenderPipeline {
290
310
  texturesRenderable = false;
291
311
  }
292
312
  }
293
- for (const [, texture] of Object.entries(this.bindings)) {
294
- if (texture instanceof WEBGLTexture) {
295
- texture.update();
296
- }
297
- }
313
+ // TODO - remove this should be handled by ExternalTexture
314
+ // for (const [, texture] of Object.entries(this.bindings)) {
315
+ // if (texture instanceof WEBGLTexture) {
316
+ // texture.update();
317
+ // }
318
+ // }
298
319
  return texturesRenderable;
299
320
  }
300
321
  /** Apply any bindings (before each draw call) */
@@ -411,3 +432,4 @@ function mergeShaderLayout(baseLayout, overrideLayout) {
411
432
  }
412
433
  return mergedLayout;
413
434
  }
435
+ //# sourceMappingURL=webgl-render-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-render-pipeline.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"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"}
@@ -48,3 +48,4 @@ export class WEBGLSampler extends Sampler {
48
48
  }
49
49
  }
50
50
  }
51
+ //# sourceMappingURL=webgl-sampler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-sampler.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-sampler.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,OAAO,EAAe,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,EAAE,EAAsB,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAC,+BAA+B,EAAC,4CAAyC;AAGjF;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO;IAC9B,MAAM,CAAc;IACpB,MAAM,CAAe;IACrB,UAAU,CAAsB;IAEzC,YAAY,MAAmB,EAAE,KAAmB;QAClD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QAC5D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAEQ,OAAO;QACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,uCAAuC;YACvC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAEQ,QAAQ;QACf,OAAO,WAAW,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7D,CAAC;IAED,4CAA4C;IACpC,qBAAqB,CAAC,UAA+B;QAC3D,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACxD,+GAA+G;YAC/G,uEAAuE;YACvE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAA4C,CAAC;YACvE,QAAQ,KAAK,EAAE,CAAC;gBACd,WAAwB;gBACxB;oBACE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC5D,MAAM;gBACR;oBACE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBAC5D,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -8,6 +8,7 @@ export declare class WEBGLShader extends Shader {
8
8
  readonly handle: WebGLShader;
9
9
  constructor(device: WebGLDevice, props: ShaderProps);
10
10
  destroy(): void;
11
+ get asyncCompilationStatus(): Promise<'pending' | 'success' | 'error'>;
11
12
  getCompilationInfo(): Promise<readonly CompilerMessage[]>;
12
13
  getCompilationInfoSync(): readonly CompilerMessage[];
13
14
  getTranslatedSource(): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAM,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C;;GAEG;AACH,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW;IAgB1C,OAAO,IAAI,IAAI;IAST,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAK/D,sBAAsB,IAAI,SAAS,eAAe,EAAE;IAKpD,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAQ7C,kDAAkD;cAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCvD,6DAA6D;cAC7C,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5D;;;;OAIG;IACH,SAAS,CAAC,qBAAqB;CAKhC"}
1
+ {"version":3,"file":"webgl-shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAM,MAAM,eAAe,CAAC;AAGxE,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C;;GAEG;AACH,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;gBAEjB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW;IAoB1C,OAAO,IAAI,IAAI;IAWxB,IAAI,sBAAsB,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,CAErE;IAEc,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAK/D,sBAAsB,IAAI,SAAS,eAAe,EAAE;IAKpD,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAQ7C,kDAAkD;cAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCvD,6DAA6D;cAC7C,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5D;;;;OAIG;IACH,SAAS,CAAC,qBAAqB;CAKhC"}
@@ -23,23 +23,30 @@ export class WEBGLShader extends Shader {
23
23
  default:
24
24
  throw new Error(this.props.stage);
25
25
  }
26
+ // default framebuffer handle is null, so we can't set spector metadata...
27
+ device._setWebGLDebugMetadata(this.handle, this, { spector: this.props });
26
28
  this._compile(this.source);
27
29
  }
28
30
  destroy() {
29
31
  if (this.handle) {
30
32
  this.removeStats();
31
33
  this.device.gl.deleteShader(this.handle);
32
- // this.handle = null;
33
34
  this.destroyed = true;
35
+ // @ts-expect-error
36
+ this.handle.destroyed = true;
37
+ // this.handle = null;
34
38
  }
35
39
  }
40
+ get asyncCompilationStatus() {
41
+ return this._waitForCompilationComplete().then(() => this.compilationStatus);
42
+ }
36
43
  async getCompilationInfo() {
37
44
  await this._waitForCompilationComplete();
38
45
  return this.getCompilationInfoSync();
39
46
  }
40
47
  getCompilationInfoSync() {
41
- const log = this.device.gl.getShaderInfoLog(this.handle);
42
- return log ? parseShaderCompilerLog(log) : [];
48
+ const shaderLog = this.device.gl.getShaderInfoLog(this.handle);
49
+ return shaderLog ? parseShaderCompilerLog(shaderLog) : [];
43
50
  }
44
51
  getTranslatedSource() {
45
52
  const extensions = this.device.getExtension('WEBGL_debug_shaders');
@@ -49,13 +56,12 @@ export class WEBGLShader extends Shader {
49
56
  // PRIVATE METHODS
50
57
  /** Compile a shader and get compilation status */
51
58
  async _compile(source) {
52
- const addGLSLVersion = (source) => source.startsWith('#version ') ? source : `#version 100\n${source}`;
53
- source = addGLSLVersion(source);
59
+ source = source.startsWith('#version ') ? source : `#version 300 es\n${source}`;
54
60
  const { gl } = this.device;
55
61
  gl.shaderSource(this.handle, source);
56
62
  gl.compileShader(this.handle);
57
63
  // For performance reasons, avoid checking shader compilation errors on production
58
- if (log.level === 0) {
64
+ if (!this.device.props.debug) {
59
65
  this.compilationStatus = 'pending';
60
66
  return;
61
67
  }
@@ -115,3 +121,4 @@ export class WEBGLShader extends Shader {
115
121
  // log.error(`GLSL compilation errors in ${shaderDescription}\n${formattedLog}`)();
116
122
  // displayShaderLog(parsedLog, source, shaderName);
117
123
  // }
124
+ //# sourceMappingURL=webgl-shader.js.map