@luma.gl/webgl 9.0.17 → 9.1.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 (144) hide show
  1. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  2. package/dist/adapter/converters/device-parameters.js +30 -12
  3. package/dist/adapter/converters/texture-formats.d.ts +22 -16
  4. package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
  5. package/dist/adapter/converters/texture-formats.js +39 -47
  6. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  7. package/dist/adapter/device-helpers/webgl-device-features.js +1 -2
  8. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -1
  9. package/dist/adapter/helpers/webgl-texture-utils.d.ts +300 -0
  10. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -0
  11. package/dist/adapter/helpers/webgl-texture-utils.js +370 -0
  12. package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
  13. package/dist/adapter/helpers/webgl-topology-utils.js +0 -4
  14. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  15. package/dist/adapter/resources/webgl-buffer.js +2 -2
  16. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  17. package/dist/adapter/resources/webgl-command-buffer.js +6 -9
  18. package/dist/adapter/resources/webgl-framebuffer.d.ts +32 -5
  19. package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
  20. package/dist/adapter/resources/webgl-framebuffer.js +42 -60
  21. package/dist/adapter/resources/webgl-render-pass.d.ts +3 -2
  22. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  23. package/dist/adapter/resources/webgl-render-pass.js +18 -7
  24. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  25. package/dist/adapter/resources/webgl-render-pipeline.js +46 -21
  26. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  27. package/dist/adapter/resources/webgl-shader.js +3 -3
  28. package/dist/adapter/resources/webgl-texture-view.d.ts +1 -1
  29. package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -1
  30. package/dist/adapter/resources/webgl-texture-view.js +1 -1
  31. package/dist/adapter/resources/webgl-texture.d.ts +76 -172
  32. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  33. package/dist/adapter/resources/webgl-texture.js +397 -511
  34. package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -2
  35. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  36. package/dist/adapter/resources/webgl-vertex-array.js +2 -2
  37. package/dist/adapter/webgl-adapter.d.ts +21 -0
  38. package/dist/adapter/webgl-adapter.d.ts.map +1 -0
  39. package/dist/adapter/webgl-adapter.js +91 -0
  40. package/dist/adapter/webgl-canvas-context.d.ts +3 -1
  41. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  42. package/dist/adapter/webgl-canvas-context.js +2 -0
  43. package/dist/adapter/webgl-device.d.ts +19 -30
  44. package/dist/adapter/webgl-device.d.ts.map +1 -1
  45. package/dist/adapter/webgl-device.js +35 -114
  46. package/dist/classic/accessor.d.ts +22 -1
  47. package/dist/classic/accessor.d.ts.map +1 -1
  48. package/dist/classic/accessor.js +1 -9
  49. package/dist/classic/clear.d.ts.map +1 -1
  50. package/dist/classic/clear.js +2 -5
  51. package/dist/classic/copy-and-blit.d.ts +3 -1
  52. package/dist/classic/copy-and-blit.d.ts.map +1 -1
  53. package/dist/classic/copy-and-blit.js +21 -18
  54. package/dist/classic/format-utils.d.ts.map +1 -1
  55. package/dist/classic/format-utils.js +0 -3
  56. package/dist/classic/typed-array-utils.d.ts +1 -1
  57. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  58. package/dist/context/debug/spector-types.d.ts +1108 -0
  59. package/dist/context/debug/spector-types.d.ts.map +1 -0
  60. package/dist/context/debug/spector-types.js +697 -0
  61. package/dist/context/debug/spector.d.ts +12 -8
  62. package/dist/context/debug/spector.d.ts.map +1 -1
  63. package/dist/context/debug/spector.js +25 -18
  64. package/dist/context/debug/webgl-developer-tools.d.ts +1 -1
  65. package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
  66. package/dist/context/debug/webgl-developer-tools.js +2 -5
  67. package/dist/context/parameters/webgl-parameter-tables.js +1 -1
  68. package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts +9 -0
  69. package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts.map +1 -0
  70. package/dist/context/polyfills/polyfill-webgl1-extensions.js +181 -0
  71. package/dist/context/state-tracker/webgl-state-tracker.d.ts +43 -0
  72. package/dist/context/state-tracker/webgl-state-tracker.d.ts.map +1 -0
  73. package/dist/context/state-tracker/{track-context-state.js → webgl-state-tracker.js} +46 -77
  74. package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
  75. package/dist/context/state-tracker/with-parameters.js +5 -4
  76. package/dist/dist.dev.js +1112 -1380
  77. package/dist/dist.min.js +2 -2
  78. package/dist/index.cjs +1122 -1284
  79. package/dist/index.cjs.map +4 -4
  80. package/dist/index.d.ts +3 -5
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +3 -5
  83. package/dist/utils/fill-array.d.ts +8 -0
  84. package/dist/utils/fill-array.d.ts.map +1 -0
  85. package/dist/utils/fill-array.js +26 -0
  86. package/dist/utils/load-script.d.ts +8 -0
  87. package/dist/utils/load-script.d.ts.map +1 -0
  88. package/dist/utils/load-script.js +26 -0
  89. package/dist/utils/split-uniforms-and-bindings.d.ts +9 -0
  90. package/dist/utils/split-uniforms-and-bindings.d.ts.map +1 -0
  91. package/dist/utils/split-uniforms-and-bindings.js +20 -0
  92. package/dist/utils/uid.d.ts +7 -0
  93. package/dist/utils/uid.d.ts.map +1 -0
  94. package/dist/utils/uid.js +14 -0
  95. package/package.json +6 -5
  96. package/src/adapter/converters/device-parameters.ts +31 -13
  97. package/src/adapter/converters/texture-formats.ts +51 -56
  98. package/src/adapter/device-helpers/webgl-device-features.ts +1 -2
  99. package/src/adapter/device-helpers/webgl-device-limits.ts +1 -1
  100. package/src/adapter/helpers/webgl-texture-utils.ts +484 -0
  101. package/src/adapter/helpers/webgl-topology-utils.ts +0 -4
  102. package/src/adapter/resources/webgl-buffer.ts +2 -2
  103. package/src/adapter/resources/webgl-command-buffer.ts +8 -10
  104. package/src/adapter/resources/webgl-framebuffer.ts +22 -56
  105. package/src/adapter/resources/webgl-render-pass.ts +21 -9
  106. package/src/adapter/resources/webgl-render-pipeline.ts +50 -24
  107. package/src/adapter/resources/webgl-shader.ts +4 -4
  108. package/src/adapter/resources/webgl-texture-view.ts +1 -3
  109. package/src/adapter/resources/webgl-texture.ts +445 -784
  110. package/src/adapter/resources/webgl-vertex-array.ts +8 -7
  111. package/src/adapter/webgl-adapter.ts +113 -0
  112. package/src/adapter/webgl-canvas-context.ts +4 -1
  113. package/src/adapter/webgl-device.ts +40 -151
  114. package/src/classic/accessor.ts +31 -11
  115. package/src/classic/clear.ts +3 -6
  116. package/src/classic/copy-and-blit.ts +32 -27
  117. package/src/classic/format-utils.ts +0 -3
  118. package/src/classic/typed-array-utils.ts +1 -1
  119. package/src/context/debug/spector-types.ts +1154 -0
  120. package/src/context/debug/spector.ts +40 -30
  121. package/src/context/debug/webgl-developer-tools.ts +3 -7
  122. package/src/context/parameters/webgl-parameter-tables.ts +3 -3
  123. package/src/context/polyfills/polyfill-webgl1-extensions.ts +202 -0
  124. package/src/context/state-tracker/{track-context-state.ts → webgl-state-tracker.ts} +57 -97
  125. package/src/context/state-tracker/with-parameters.ts +5 -4
  126. package/src/index.ts +5 -13
  127. package/src/utils/fill-array.ts +35 -0
  128. package/src/utils/load-script.ts +30 -0
  129. package/src/utils/split-uniforms-and-bindings.ts +31 -0
  130. package/src/utils/uid.ts +16 -0
  131. package/dist/adapter/objects/constants-to-keys.d.ts +0 -3
  132. package/dist/adapter/objects/constants-to-keys.d.ts.map +0 -1
  133. package/dist/adapter/objects/constants-to-keys.js +0 -22
  134. package/dist/adapter/objects/webgl-renderbuffer.d.ts +0 -43
  135. package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +0 -1
  136. package/dist/adapter/objects/webgl-renderbuffer.js +0 -95
  137. package/dist/adapter/objects/webgl-resource.d.ts +0 -32
  138. package/dist/adapter/objects/webgl-resource.d.ts.map +0 -1
  139. package/dist/adapter/objects/webgl-resource.js +0 -114
  140. package/dist/context/state-tracker/track-context-state.d.ts +0 -22
  141. package/dist/context/state-tracker/track-context-state.d.ts.map +0 -1
  142. package/src/adapter/objects/constants-to-keys.ts +0 -27
  143. package/src/adapter/objects/webgl-renderbuffer.ts +0 -132
  144. package/src/adapter/objects/webgl-resource.ts +0 -183
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-texture-utils.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/webgl-texture-utils.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAEjD,OAAO,EACL,EAAE,EACF,eAAe,EAEf,iBAAiB,EACjB,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAK1C,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,EAAE,EAAE,CAAC;IACrB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,EAAE,EAAE,CAAC;IACrB,QAAQ,EAAE,EAAE,CAAC;IACb,MAAM,EAAE,EAAE,CAAC;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,sBAAsB,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,sBAAsB,GAC9B,IAAI,CAaN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,sBAAsB,EAC1B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAyBN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,sBAAsB,EAC1B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAkCN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,sBAAsB,EAC1B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,GAC/B,IAAI,CAoCN;AAID,gFAAgF;AAChF,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,GACjE,eAAe,CAWjB;AAiBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwNE"}
@@ -0,0 +1,370 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ // import {Buffer} from '@luma.gl/core';
5
+ import { GL } from '@luma.gl/constants';
6
+ /** A "border" parameter is required in many WebGL texture APIs, but must always be 0... */
7
+ const BORDER = 0;
8
+ /**
9
+ * Initializes a texture memory space
10
+ * Clear all the textures and mip levels of a two-dimensional or array texture at the same time.
11
+ * On some implementations faster than repeatedly setting levels
12
+ *
13
+ * @note From WebGL 2 spec section 3.7.6:
14
+ * @see https://registry.khronos.org/webgl/specs/latest/2.0/
15
+ * - The image contents are set as if a buffer of sufficient size initialized to 0 would be passed to each level's texImage2D/3D
16
+ * - texStorage2D should be considered a preferred alternative to texImage2D. It may have lower memory costs than texImage2D in some implementations.
17
+ * - Once texStorage*D has been called, the texture is immutable and can only be updated with texSubImage*(), not texImage()
18
+ */
19
+ export function initializeTextureStorage(gl, levels, options) {
20
+ const { dimension, width, height, depth = 0 } = options;
21
+ const { glInternalFormat } = options;
22
+ const glTarget = options.glTarget; // getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
23
+ switch (dimension) {
24
+ case '2d-array':
25
+ case '3d':
26
+ gl.texStorage3D(glTarget, levels, glInternalFormat, width, height, depth);
27
+ break;
28
+ default:
29
+ gl.texStorage2D(glTarget, levels, glInternalFormat, width, height);
30
+ }
31
+ }
32
+ /**
33
+ * Copy a region of compressed data from a GPU memory buffer into this texture.
34
+ */
35
+ export function copyCPUImageToMipLevel(gl, image, options) {
36
+ const { dimension, width, height, depth = 0, level = 0 } = options;
37
+ const { x = 0, y = 0, z = 0 } = options;
38
+ const { glFormat, glType } = options;
39
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
40
+ // width = size.width,
41
+ // height = size.height
42
+ switch (dimension) {
43
+ case '2d-array':
44
+ case '3d':
45
+ // prettier-ignore
46
+ gl.texSubImage3D(glTarget, level, x, y, z, width, height, depth, glFormat, glType, image);
47
+ break;
48
+ case '2d':
49
+ case 'cube':
50
+ // prettier-ignore
51
+ gl.texSubImage2D(glTarget, level, x, y, width, height, glFormat, glType, image);
52
+ break;
53
+ default:
54
+ throw new Error(dimension);
55
+ }
56
+ }
57
+ /**
58
+ * Copy a region of data from a CPU memory buffer into this texture.
59
+ */
60
+ export function copyCPUDataToMipLevel(gl, typedArray, options) {
61
+ const { dimension, width, height, depth = 0, level = 0, byteOffset = 0 } = options;
62
+ const { x = 0, y = 0, z = 0 } = options;
63
+ const { glFormat, glType, compressed } = options;
64
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
65
+ // gl.bindTexture(glTarget, null);
66
+ switch (dimension) {
67
+ case '2d-array':
68
+ case '3d':
69
+ if (compressed) {
70
+ // prettier-ignore
71
+ gl.compressedTexSubImage3D(glTarget, level, x, y, z, width, height, depth, glFormat, typedArray, byteOffset); // , byteLength
72
+ }
73
+ else {
74
+ // prettier-ignore
75
+ gl.texSubImage3D(glTarget, level, x, y, z, width, height, depth, glFormat, glType, typedArray, byteOffset); // , byteLength
76
+ }
77
+ break;
78
+ case '2d':
79
+ case 'cube':
80
+ if (compressed) {
81
+ // prettier-ignore
82
+ gl.compressedTexSubImage2D(glTarget, level, x, y, width, height, glFormat, typedArray, byteOffset); // , byteLength
83
+ }
84
+ else {
85
+ // prettier-ignore
86
+ gl.texSubImage2D(glTarget, level, x, y, width, height, glFormat, glType, typedArray, byteOffset); // , byteLength
87
+ }
88
+ break;
89
+ default:
90
+ throw new Error(dimension);
91
+ }
92
+ }
93
+ /**
94
+ * Copy a region of compressed data from a GPU memory buffer into this texture.
95
+ */
96
+ export function copyGPUBufferToMipLevel(gl, webglBuffer, byteLength, options) {
97
+ const { dimension, width, height, depth = 0, level = 0, byteOffset = 0 } = options;
98
+ const { x = 0, y = 0, z = 0 } = options;
99
+ const { glFormat, glType, compressed } = options;
100
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
101
+ gl.bindBuffer(35052, webglBuffer);
102
+ switch (dimension) {
103
+ case '2d-array':
104
+ case '3d':
105
+ // 3 dimensional textures requires 3D texture functions
106
+ if (compressed) {
107
+ // TODO enable extension?
108
+ // prettier-ignore
109
+ gl.compressedTexSubImage3D(glTarget, level, x, y, z, width, height, depth, glFormat, byteLength, byteOffset);
110
+ }
111
+ else {
112
+ // prettier-ignore
113
+ gl.texSubImage3D(glTarget, level, x, y, z, width, height, depth, glFormat, glType, byteOffset);
114
+ }
115
+ break;
116
+ case '2d':
117
+ case 'cube':
118
+ if (compressed) {
119
+ // prettier-ignore
120
+ gl.compressedTexSubImage2D(glTarget, level, x, y, width, height, glFormat, byteLength, byteOffset);
121
+ }
122
+ else {
123
+ // prettier-ignore
124
+ gl.texSubImage2D(glTarget, level, x, y, width, height, BORDER, glFormat, byteOffset);
125
+ }
126
+ break;
127
+ default:
128
+ throw new Error(dimension);
129
+ }
130
+ }
131
+ // INTERNAL HELPERS
132
+ /** Convert a WebGPU style texture constant to a WebGL style texture constant */
133
+ export function getWebGLTextureTarget(dimension) {
134
+ // prettier-ignore
135
+ switch (dimension) {
136
+ case '1d': break; // not supported in any WebGL version
137
+ case '2d': return 3553; // supported in WebGL1
138
+ case '3d': return 32879; // supported in WebGL2
139
+ case 'cube': return 34067; // supported in WebGL1
140
+ case '2d-array': return 35866; // supported in WebGL2
141
+ case 'cube-array': break; // not supported in any WebGL version
142
+ }
143
+ throw new Error(dimension);
144
+ }
145
+ /**
146
+ * In WebGL, cube maps specify faces by overriding target instead of using the depth parameter.
147
+ * @note We still bind the texture using GL.TEXTURE_CUBE_MAP, but we need to use the face-specific target when setting mip levels.
148
+ * @returns glTarget unchanged, if dimension !== 'cube'.
149
+ */
150
+ function getWebGLCubeFaceTarget(glTarget, dimension, level) {
151
+ return dimension === 'cube' ? 34069 + level : glTarget;
152
+ }
153
+ // texImage methods
154
+ /**
155
+ * Clear a texture mip level.
156
+ * Wrapper for the messy WebGL texture API
157
+ *
158
+ export function clearMipLevel(gl: WebGL2RenderingContext, options: WebGLSetTextureOptions): void {
159
+ const {dimension, width, height, depth = 0, level = 0} = options;
160
+ const {glInternalFormat, glFormat, glType, compressed} = options;
161
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
162
+
163
+ switch (dimension) {
164
+ case '2d-array':
165
+ case '3d':
166
+ if (compressed) {
167
+ // prettier-ignore
168
+ gl.compressedTexImage3D(glTarget, level, glInternalFormat, width, height, depth, BORDER, null);
169
+ } else {
170
+ // prettier-ignore
171
+ gl.texImage3D( glTarget, level, glInternalFormat, width, height, depth, BORDER, glFormat, glType, null);
172
+ }
173
+ break;
174
+
175
+ case '2d':
176
+ case 'cube':
177
+ if (compressed) {
178
+ // prettier-ignore
179
+ gl.compressedTexImage2D(glTarget, level, glInternalFormat, width, height, BORDER, null);
180
+ } else {
181
+ // prettier-ignore
182
+ gl.texImage2D(glTarget, level, glInternalFormat, width, height, BORDER, glFormat, glType, null);
183
+ }
184
+ break;
185
+
186
+ default:
187
+ throw new Error(dimension);
188
+ }
189
+ }
190
+
191
+ /**
192
+ * Set a texture mip level to the contents of an external image.
193
+ * Wrapper for the messy WebGL texture API
194
+ * @note Corresponds to WebGPU device.queue.copyExternalImageToTexture()
195
+ *
196
+ export function setMipLevelFromExternalImage(
197
+ gl: WebGL2RenderingContext,
198
+ image: ExternalImage,
199
+ options: WebGLSetTextureOptions
200
+ ): void {
201
+ const {dimension, width, height, depth = 0, level = 0} = options;
202
+ const {glInternalFormat, glType} = options;
203
+
204
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
205
+
206
+ // TODO - we can't change texture width (due to WebGPU limitations) -
207
+ // and the width/heigh of an external image is implicit, so why do we need to extract it?
208
+ // So what width height do we supply? The image size or the texture size?
209
+ // const {width, height} = Texture.getExternalImageSize(image);
210
+
211
+ switch (dimension) {
212
+ case '2d-array':
213
+ case '3d':
214
+ // prettier-ignore
215
+ gl.texImage3D(glTarget, level, glInternalFormat, width, height, depth, BORDER, glInternalFormat, glType, image);
216
+ break;
217
+
218
+ case '2d':
219
+ case 'cube':
220
+ // prettier-ignore
221
+ gl.texImage2D(glTarget, level, glInternalFormat, width, height, BORDER, glInternalFormat, glType, image);
222
+ break;
223
+
224
+ default:
225
+ throw new Error(dimension);
226
+ }
227
+ }
228
+
229
+ /**
230
+ * Set a texture mip level from CPU memory
231
+ * Wrapper for the messy WebGL texture API
232
+ * @note Not available (directly) in WebGPU
233
+ *
234
+ export function setMipLevelFromTypedArray(
235
+ gl: WebGL2RenderingContext,
236
+ data: TypedArray,
237
+ parameters: {},
238
+ options: {
239
+ dimension: '1d' | '2d' | '2d-array' | 'cube' | 'cube-array' | '3d';
240
+ height: number;
241
+ width: number;
242
+ depth?: number;
243
+ level?: number;
244
+ offset?: number;
245
+ glTarget: GLTextureTarget;
246
+ glInternalFormat: GL;
247
+ glFormat: GL;
248
+ glType: GL;
249
+ compressed?: boolean;
250
+ }
251
+ ): void {
252
+ const {dimension, width, height, depth = 0, level = 0, offset = 0} = options;
253
+ const {glInternalFormat, glFormat, glType, compressed} = options;
254
+
255
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
256
+
257
+ withGLParameters(gl, parameters, () => {
258
+ switch (dimension) {
259
+ case '2d-array':
260
+ case '3d':
261
+ if (compressed) {
262
+ // prettier-ignore
263
+ gl.compressedTexImage3D(glTarget, level, glInternalFormat, width, height, depth, BORDER, data);
264
+ } else {
265
+ // prettier-ignore
266
+ gl.texImage3D( glTarget, level, glInternalFormat, width, height, depth, BORDER, glFormat, glType, data);
267
+ }
268
+ break;
269
+
270
+ case '2d':
271
+ if (compressed) {
272
+ // prettier-ignore
273
+ gl.compressedTexImage2D(glTarget, level, glInternalFormat, width, height, BORDER, data);
274
+ } else {
275
+ // prettier-ignore
276
+ gl.texImage2D( glTarget, level, glInternalFormat, width, height, BORDER, glFormat, glType, data, offset);
277
+ }
278
+ break;
279
+
280
+ default:
281
+ throw new Error(dimension);
282
+ }
283
+ });
284
+ }
285
+
286
+ /**
287
+ * Set a texture level from CPU memory
288
+ * @note Not available (directly) in WebGPU
289
+ _setMipLevelFromTypedArray(
290
+ depth: number,
291
+ level: number,
292
+ data: TextureLevelData,
293
+ offset = 0,
294
+ parameters
295
+ ): void {
296
+ withGLParameters(this.gl, parameters, () => {
297
+ switch (this.props.dimension) {
298
+ case '2d-array':
299
+ case '3d':
300
+ if (this.compressed) {
301
+ // prettier-ignore
302
+ this.device.gl.compressedTexImage3D(this.glTarget, level, this.glInternalFormat, data.width, data.height, depth, BORDER, data.data);
303
+ } else {
304
+ // prettier-ignore
305
+ this.gl.texImage3D( this.glTarget, level, this.glInternalFormat, this.width, this.height, depth, BORDER, this.glFormat, this.glType, data.data);
306
+ }
307
+ break;
308
+
309
+ case '2d':
310
+ if (this.compressed) {
311
+ // prettier-ignore
312
+ this.device.gl.compressedTexImage2D(this.glTarget, level, this.glInternalFormat, data.width, data.height, BORDER, data.data);
313
+ } else {
314
+ // prettier-ignore
315
+ this.device.gl.texImage2D( this.glTarget, level, this.glInternalFormat, this.width, this.height, BORDER, this.glFormat, this.glType, data.data, offset);
316
+ }
317
+ break;
318
+
319
+ default:
320
+ throw new Error(this.props.dimension);
321
+ }
322
+ });
323
+ }
324
+
325
+ * Set a texture level from a GPU buffer
326
+ *
327
+ export function setMipLevelFromGPUBuffer(
328
+ gl: WebGL2RenderingContext,
329
+ buffer: Buffer,
330
+ options: WebGLSetTextureOptions
331
+ ): void {
332
+ const {dimension, width, height, depth = 0, level = 0, byteOffset = 0} = options;
333
+ const {glInternalFormat, glFormat, glType, compressed} = options;
334
+ const glTarget = getWebGLCubeFaceTarget(options.glTarget, dimension, depth);
335
+
336
+ const webglBuffer = buffer as WEBGLBuffer;
337
+ const imageSize = buffer.byteLength;
338
+
339
+ // In WebGL the source buffer is not a parameter. Instead it needs to be bound to a special bind point
340
+ gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, webglBuffer.handle);
341
+
342
+ switch (dimension) {
343
+ case '2d-array':
344
+ case '3d':
345
+ if (compressed) {
346
+ // prettier-ignore
347
+ gl.compressedTexImage3D(glTarget, level, glInternalFormat, width, height, depth, BORDER, imageSize, byteOffset);
348
+ } else {
349
+ // prettier-ignore
350
+ gl.texImage3D(glTarget, level, glInternalFormat, width, height, depth, BORDER, glFormat, glType, byteOffset);
351
+ }
352
+ break;
353
+
354
+ case '2d':
355
+ if (compressed) {
356
+ // prettier-ignore
357
+ gl.compressedTexImage2D(glTarget, level, glInternalFormat, width, height, BORDER, imageSize, byteOffset);
358
+ } else {
359
+ // prettier-ignore
360
+ gl.texImage2D(glTarget, level, glInternalFormat, width, height, BORDER, glFormat, glType, byteOffset);
361
+ }
362
+ break;
363
+
364
+ default:
365
+ throw new Error(dimension);
366
+ }
367
+
368
+ gl.bindBuffer(GL.PIXEL_UNPACK_BUFFER, null);
369
+ }
370
+ */
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-topology-utils.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/webgl-topology-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,EAAE,EAAE,mBAAmB,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAGhD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,WAAW,CAmB/E;AAGD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAkBT;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAaT;AAED,sCAAsC;AACtC,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,iBAAiB,GAEzB,EAAE,CAAC,MAAM,GACT,EAAE,CAAC,KAAK,GACR,EAAE,CAAC,UAAU,GACb,EAAE,CAAC,SAAS,GACZ,EAAE,CAAC,SAAS,GACZ,EAAE,CAAC,cAAc,GACjB,EAAE,CAAC,YAAY,CAYlB;AAED,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,iBAAiB,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAY/F"}
1
+ {"version":3,"file":"webgl-topology-utils.d.ts","sourceRoot":"","sources":["../../../src/adapter/helpers/webgl-topology-utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,EAAE,EAAE,mBAAmB,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAGhD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,WAAW,CAmB/E;AAGD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAkBT;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAaT;AAED,sCAAsC;AACtC,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,iBAAiB,GAEzB,EAAE,CAAC,MAAM,GACT,EAAE,CAAC,KAAK,GACR,EAAE,CAAC,UAAU,GACb,EAAE,CAAC,SAAS,GACZ,EAAE,CAAC,SAAS,GACZ,EAAE,CAAC,cAAc,GACjB,EAAE,CAAC,YAAY,CAUlB;AAED,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,iBAAiB,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAU/F"}
@@ -65,10 +65,8 @@ export function getGLDrawMode(topology) {
65
65
  case 'point-list': return 0;
66
66
  case 'line-list': return 1;
67
67
  case 'line-strip': return 3;
68
- case 'line-loop-webgl': return 2;
69
68
  case 'triangle-list': return 4;
70
69
  case 'triangle-strip': return 5;
71
- case 'triangle-fan-webgl': return 6;
72
70
  default: throw new Error(topology);
73
71
  }
74
72
  }
@@ -79,10 +77,8 @@ export function getGLPrimitive(topology) {
79
77
  case 'point-list': return 0;
80
78
  case 'line-list': return 1;
81
79
  case 'line-strip': return 1;
82
- case 'line-loop-webgl': return 1;
83
80
  case 'triangle-list': return 4;
84
81
  case 'triangle-strip': return 4;
85
- case 'triangle-fan-webgl': return 4;
86
82
  default: throw new Error(topology);
87
83
  }
88
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-buffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAC,MAAM,EAAS,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C,6BAA6B;AAC7B,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC,cAAc,CAAC;IACjF,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC;IACnD,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,YAAY,CAAqB;IAE9E,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;gBAEN,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,WAAgB;IA2BxD,sEAAsE;IACtE,aAAa,CACX,IAAI,EAAE,WAAW,GAAG,eAAe,EACnC,UAAU,GAAE,MAAU,EACtB,UAAU,GAAE,MAAqC,GAChD,IAAI;IAgBP,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IA2BpC,OAAO,IAAI,IAAI;IAWf,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,GAAE,MAAU,GAAG,IAAI;IAmBnE,+CAA+C;IAChC,SAAS,CAAC,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIlF,2DAA2D;IAClD,aAAa,CAAC,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;CAexE"}
1
+ {"version":3,"file":"webgl-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-buffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C,6BAA6B;AAC7B,qBAAa,WAAY,SAAQ,MAAM;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAE7B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC,cAAc,CAAC;IACjF,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC;IACnD,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,YAAY,CAAqB;IAE9E,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;gBAEN,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,WAAgB;IA2BxD,sEAAsE;IACtE,aAAa,CACX,IAAI,EAAE,WAAW,GAAG,eAAe,EACnC,UAAU,GAAE,MAAU,EACtB,UAAU,GAAE,MAAqC,GAChD,IAAI;IAgBP,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IA2BpC,OAAO,IAAI,IAAI;IAWf,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,GAAE,MAAU,GAAG,IAAI;IAmBnE,+CAA+C;IAChC,SAAS,CAAC,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIlF,2DAA2D;IAClD,aAAa,CAAC,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;CAexE"}
@@ -1,7 +1,7 @@
1
1
  // luma.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { Buffer, assert } from '@luma.gl/core';
4
+ import { Buffer } from '@luma.gl/core';
5
5
  import { GL } from '@luma.gl/constants';
6
6
  /** WebGL Buffer interface */
7
7
  export class WEBGLBuffer extends Buffer {
@@ -55,7 +55,7 @@ export class WEBGLBuffer extends Buffer {
55
55
  }
56
56
  // Allocate a GPU buffer of specified size.
57
57
  _initWithByteLength(byteLength) {
58
- assert(byteLength >= 0);
58
+ // assert(byteLength >= 0);
59
59
  // Workaround needed for Safari (#291):
60
60
  // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.
61
61
  let data = byteLength;
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-command-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-command-buffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,aAAa,EAAuB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAU5C,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,KAAK,OAAO,GACR,yBAAyB,GACzB,0BAA0B,GAC1B,0BAA0B,GAC1B,2BAA2B,CAAC;AAEhC,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAM;gBAEb,MAAM,EAAE,WAAW;IAK/B,cAAc,CAAC,QAAQ,GAAE,OAAO,EAAkB;CAkBnD;AAgPD,wBAAgB,oBAAoB,CAAC,MAAM,KAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAmB1D;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAcjD"}
1
+ {"version":3,"file":"webgl-command-buffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-command-buffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,aAAa,EAAuB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAM5C,KAAK,yBAAyB,GAAG;IAC/B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAAC;AAEF,KAAK,OAAO,GACR,yBAAyB,GACzB,0BAA0B,GAC1B,0BAA0B,GAC1B,2BAA2B,CAAC;AAEhC,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,OAAO,EAAE,CAAM;gBAEb,MAAM,EAAE,WAAW;IAK/B,cAAc,CAAC,QAAQ,GAAE,OAAO,EAAkB;CAkBnD;AAkPD,wBAAgB,oBAAoB,CAAC,MAAM,KAAA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAmB1D;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAcjD"}
@@ -4,10 +4,7 @@
4
4
  import { CommandBuffer, Texture } from '@luma.gl/core';
5
5
  import { GL } from '@luma.gl/constants';
6
6
  import { WEBGLTexture } from "./webgl-texture.js";
7
- import { getWebGLTextureParameters } from "../converters/texture-formats.js";
8
- function cast(value) {
9
- return value;
10
- }
7
+ import { getTextureFormatWebGL } from "../converters/texture-formats.js";
11
8
  export class WEBGLCommandBuffer extends CommandBuffer {
12
9
  device;
13
10
  commands = [];
@@ -35,8 +32,8 @@ export class WEBGLCommandBuffer extends CommandBuffer {
35
32
  }
36
33
  }
37
34
  function _copyBufferToBuffer(device, options) {
38
- const source = cast(options.source);
39
- const destination = cast(options.destination);
35
+ const source = options.source;
36
+ const destination = options.destination;
40
37
  // {In WebGL2 we can p}erform the copy on the GPU
41
38
  // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type
42
39
  device.gl.bindBuffer(36662, source.handle);
@@ -100,8 +97,8 @@ function _copyTextureToBuffer(device, options) {
100
97
  const webglBuffer = destination;
101
98
  const sourceWidth = width || framebuffer.width;
102
99
  const sourceHeight = height || framebuffer.height;
103
- const sourceParams = getWebGLTextureParameters(framebuffer.texture.props.format);
104
- const sourceFormat = sourceParams.dataFormat;
100
+ const sourceParams = getTextureFormatWebGL(framebuffer.colorAttachments[0].texture.props.format);
101
+ const sourceFormat = sourceParams.format;
105
102
  const sourceType = sourceParams.type;
106
103
  // if (!target) {
107
104
  // // Create new buffer with enough size
@@ -186,7 +183,7 @@ function _copyTextureToTexture(device, options) {
186
183
  width = Number.isFinite(width) ? width : texture.width;
187
184
  height = Number.isFinite(height) ? height : texture.height;
188
185
  texture.bind(0);
189
- textureTarget = texture.target;
186
+ textureTarget = texture.glTarget;
190
187
  }
191
188
  else {
192
189
  throw new Error('invalid destination');
@@ -10,7 +10,8 @@ export declare class WEBGLFramebuffer extends Framebuffer {
10
10
  device: WebGLDevice;
11
11
  gl: WebGL2RenderingContext;
12
12
  handle: WebGLFramebuffer;
13
- get texture(): import("@luma.gl/core").TextureView;
13
+ colorAttachments: WEBGLTextureView[];
14
+ depthStencilAttachment: WEBGLTextureView | null;
14
15
  constructor(device: WebGLDevice, props: FramebufferProps);
15
16
  /** destroys any auto created resources etc. */
16
17
  destroy(): void;
@@ -18,16 +19,42 @@ export declare class WEBGLFramebuffer extends Framebuffer {
18
19
  protected createDepthStencilTexture(format: TextureFormat): Texture;
19
20
  /**
20
21
  * Attachment resize is expected to be a noop if size is same
21
- */
22
- protected resizeAttachments(width: number, height: number): this;
22
+ *
23
+ protected override resizeAttachments(width: number, height: number): this {
24
+ // for default framebuffer, just update the stored size
25
+ if (this.handle === null) {
26
+ // assert(width === undefined && height === undefined);
27
+ this.width = this.gl.drawingBufferWidth;
28
+ this.height = this.gl.drawingBufferHeight;
29
+ return this;
30
+ }
31
+
32
+ if (width === undefined) {
33
+ width = this.gl.drawingBufferWidth;
34
+ }
35
+ if (height === undefined) {
36
+ height = this.gl.drawingBufferHeight;
37
+ }
38
+
39
+ // TODO Not clear that this is better than default destroy/create implementation
40
+
41
+ for (const colorAttachment of this.colorAttachments) {
42
+ colorAttachment.texture.clone({width, height});
43
+ }
44
+ if (this.depthStencilAttachment) {
45
+ this.depthStencilAttachment.texture.resize({width, height});
46
+ }
47
+ return this;
48
+ }
49
+ */
23
50
  /** Attach one attachment */
24
- protected _attachOne(attachmentPoint: GL, attachment: Attachment): WEBGLTexture;
51
+ protected _attachTexture(attachmentPoint: GL, textureView: WEBGLTextureView): void;
25
52
  /**
26
53
  * @param attachment
27
54
  * @param texture
28
55
  * @param layer = 0 - index into WEBGLTextureArray and Texture3D or face for `TextureCubeMap`
29
56
  * @param level = 0 - mipmapLevel
30
57
  */
31
- protected _attachTexture(attachment: GL, texture: WEBGLTexture, layer: number, level: number): void;
58
+ protected _attachTextureView(attachment: GL, textureView: WEBGLTextureView): void;
32
59
  }
33
60
  //# sourceMappingURL=webgl-framebuffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-framebuffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-framebuffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,EAAC,WAAW,EAAE,OAAO,EAAS,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAC5C,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAC7C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAMtD,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,YAAY,CAAC;AAEzD,iDAAiD;AACjD,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,EAAE,WAAW,CAAC;IACpB,EAAE,EAAE,sBAAsB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IAEzB,IAAI,OAAO,wCAEV;gBAEW,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB;IAsDxD,+CAA+C;IACtC,OAAO,IAAI,IAAI;IAUxB,mGAAmG;cAChF,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAW5E;;OAEG;cACgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA2BzE,4BAA4B;IAC5B,SAAS,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY;IAqC/E;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CACtB,UAAU,EAAE,EAAE,EACd,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,IAAI;CA2BR"}
1
+ {"version":3,"file":"webgl-framebuffer.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-framebuffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAC5C,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAC7C,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAGtD,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,YAAY,CAAC;AAEzD,iDAAiD;AACjD,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,EAAE,WAAW,CAAC;IACpB,EAAE,EAAE,sBAAsB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IAEzB,gBAAgB,EAAE,gBAAgB,EAAE,CAAM;IAC1C,sBAAsB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;gBAE3C,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB;IAsDxD,+CAA+C;IACtC,OAAO,IAAI,IAAI;IAUxB,mGAAmG;cAChF,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAW5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BE;IAEF,4BAA4B;IAC5B,SAAS,CAAC,cAAc,CAAC,eAAe,EAAE,EAAE,EAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI;IAQlF;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,CAAC,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,gBAAgB,GAAG,IAAI;CA8BlF"}