@luma.gl/webgl 9.1.0-beta.8 → 9.2.0-alpha.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 (186) hide show
  1. package/dist/adapter/converters/device-parameters.js +14 -9
  2. package/dist/adapter/converters/device-parameters.js.map +1 -1
  3. package/dist/adapter/converters/shader-formats.d.ts +67 -8
  4. package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
  5. package/dist/adapter/converters/shader-formats.js +82 -52
  6. package/dist/adapter/converters/shader-formats.js.map +1 -1
  7. package/dist/adapter/converters/webgl-shadertypes.d.ts +20 -0
  8. package/dist/adapter/converters/webgl-shadertypes.d.ts.map +1 -0
  9. package/dist/adapter/converters/webgl-shadertypes.js +123 -0
  10. package/dist/adapter/converters/webgl-shadertypes.js.map +1 -0
  11. package/dist/adapter/converters/webgl-texture-table.js +5 -5
  12. package/dist/adapter/converters/webgl-texture-table.js.map +1 -1
  13. package/dist/adapter/converters/{vertex-formats.d.ts → webgl-vertex-formats.d.ts} +4 -4
  14. package/dist/adapter/converters/webgl-vertex-formats.d.ts.map +1 -0
  15. package/dist/adapter/converters/{vertex-formats.js → webgl-vertex-formats.js} +1 -1
  16. package/dist/adapter/converters/webgl-vertex-formats.js.map +1 -0
  17. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  18. package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -1
  19. package/dist/adapter/device-helpers/webgl-device-limits.d.ts +1 -1
  20. package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -1
  21. package/dist/adapter/device-helpers/webgl-device-limits.js +1 -1
  22. package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -1
  23. package/dist/adapter/helpers/format-utils.d.ts +3 -2
  24. package/dist/adapter/helpers/format-utils.d.ts.map +1 -1
  25. package/dist/adapter/helpers/format-utils.js.map +1 -1
  26. package/dist/adapter/helpers/{get-shader-layout.d.ts → get-shader-layout-from-glsl.d.ts} +1 -1
  27. package/dist/adapter/helpers/get-shader-layout-from-glsl.d.ts.map +1 -0
  28. package/dist/adapter/helpers/{get-shader-layout.js → get-shader-layout-from-glsl.js} +12 -35
  29. package/dist/adapter/helpers/get-shader-layout-from-glsl.js.map +1 -0
  30. package/dist/adapter/helpers/set-uniform.d.ts +2 -2
  31. package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
  32. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  33. package/dist/adapter/helpers/webgl-texture-utils.d.ts +2 -25
  34. package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
  35. package/dist/adapter/helpers/webgl-texture-utils.js +10 -99
  36. package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -1
  37. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  38. package/dist/adapter/resources/webgl-buffer.js +2 -2
  39. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  40. package/dist/adapter/resources/webgl-command-buffer.d.ts +2 -2
  41. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  42. package/dist/adapter/resources/webgl-command-buffer.js +4 -4
  43. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  44. package/dist/adapter/resources/webgl-command-encoder.d.ts +6 -2
  45. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  46. package/dist/adapter/resources/webgl-command-encoder.js +9 -4
  47. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  48. package/dist/adapter/resources/webgl-external-texture.js +1 -0
  49. package/dist/adapter/resources/webgl-external-texture.js.map +1 -1
  50. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-query-set.js +5 -1
  52. package/dist/adapter/resources/webgl-query-set.js.map +1 -1
  53. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  54. package/dist/adapter/resources/webgl-render-pass.js +8 -5
  55. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  56. package/dist/adapter/resources/webgl-render-pipeline.d.ts +2 -3
  57. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  58. package/dist/adapter/resources/webgl-render-pipeline.js +16 -20
  59. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  60. package/dist/adapter/resources/webgl-sampler.js +1 -1
  61. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  62. package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
  63. package/dist/adapter/resources/webgl-shader.js +4 -1
  64. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  65. package/dist/adapter/resources/webgl-texture-view.js +1 -1
  66. package/dist/adapter/resources/webgl-texture-view.js.map +1 -1
  67. package/dist/adapter/resources/webgl-texture.d.ts +21 -66
  68. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  69. package/dist/adapter/resources/webgl-texture.js +148 -324
  70. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  71. package/dist/adapter/resources/webgl-transform-feedback.d.ts +1 -1
  72. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  73. package/dist/adapter/resources/webgl-transform-feedback.js +1 -1
  74. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
  75. package/dist/adapter/resources/webgl-vertex-array.d.ts +1 -1
  76. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  77. package/dist/adapter/resources/webgl-vertex-array.js +3 -2
  78. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -1
  79. package/dist/adapter/webgl-adapter.d.ts +4 -3
  80. package/dist/adapter/webgl-adapter.d.ts.map +1 -1
  81. package/dist/adapter/webgl-adapter.js +16 -7
  82. package/dist/adapter/webgl-adapter.js.map +1 -1
  83. package/dist/adapter/webgl-canvas-context.d.ts +1 -19
  84. package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
  85. package/dist/adapter/webgl-canvas-context.js +3 -31
  86. package/dist/adapter/webgl-canvas-context.js.map +1 -1
  87. package/dist/adapter/webgl-device.d.ts +8 -15
  88. package/dist/adapter/webgl-device.d.ts.map +1 -1
  89. package/dist/adapter/webgl-device.js +15 -16
  90. package/dist/adapter/webgl-device.js.map +1 -1
  91. package/dist/context/debug/spector-types.d.ts.map +1 -1
  92. package/dist/context/debug/spector-types.js +3 -0
  93. package/dist/context/debug/spector-types.js.map +1 -1
  94. package/dist/context/debug/spector.js.map +1 -1
  95. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  96. package/dist/context/helpers/webgl-extensions.d.ts.map +1 -1
  97. package/dist/context/helpers/webgl-extensions.js +3 -0
  98. package/dist/context/helpers/webgl-extensions.js.map +1 -1
  99. package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
  100. package/dist/context/parameters/unified-parameter-api.js +7 -0
  101. package/dist/context/parameters/unified-parameter-api.js.map +1 -1
  102. package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
  103. package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
  104. package/dist/context/parameters/webgl-parameter-tables.js +1 -0
  105. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  106. package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts.map +1 -1
  107. package/dist/context/polyfills/polyfill-webgl1-extensions.js +1 -0
  108. package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -1
  109. package/dist/context/state-tracker/deep-array-equal.d.ts +2 -1
  110. package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
  111. package/dist/context/state-tracker/deep-array-equal.js +4 -5
  112. package/dist/context/state-tracker/deep-array-equal.js.map +1 -1
  113. package/dist/context/state-tracker/webgl-state-tracker.d.ts.map +1 -1
  114. package/dist/context/state-tracker/webgl-state-tracker.js +4 -1
  115. package/dist/context/state-tracker/webgl-state-tracker.js.map +1 -1
  116. package/dist/context/state-tracker/with-parameters.js.map +1 -1
  117. package/dist/dist.dev.js +4719 -4777
  118. package/dist/dist.min.js +2 -2
  119. package/dist/index.cjs +3848 -3944
  120. package/dist/index.cjs.map +4 -4
  121. package/dist/index.d.ts +1 -3
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +1 -3
  124. package/dist/index.js.map +1 -1
  125. package/package.json +4 -4
  126. package/src/adapter/converters/device-parameters.ts +19 -9
  127. package/src/adapter/converters/shader-formats.ts +50 -24
  128. package/src/adapter/converters/webgl-shadertypes.ts +152 -0
  129. package/src/adapter/converters/webgl-texture-table.ts +7 -7
  130. package/src/adapter/converters/{vertex-formats.ts → webgl-vertex-formats.ts} +3 -3
  131. package/src/adapter/device-helpers/webgl-device-features.ts +1 -1
  132. package/src/adapter/device-helpers/webgl-device-limits.ts +1 -1
  133. package/src/adapter/helpers/format-utils.ts +2 -2
  134. package/src/adapter/helpers/{get-shader-layout.ts → get-shader-layout-from-glsl.ts} +20 -50
  135. package/src/adapter/helpers/set-uniform.ts +2 -2
  136. package/src/adapter/helpers/webgl-texture-utils.ts +12 -127
  137. package/src/adapter/resources/webgl-buffer.ts +2 -2
  138. package/src/adapter/resources/webgl-command-buffer.ts +5 -5
  139. package/src/adapter/resources/webgl-command-encoder.ts +17 -8
  140. package/src/adapter/resources/webgl-query-set.ts +5 -1
  141. package/src/adapter/resources/webgl-render-pass.ts +11 -8
  142. package/src/adapter/resources/webgl-render-pipeline.ts +20 -30
  143. package/src/adapter/resources/webgl-sampler.ts +1 -1
  144. package/src/adapter/resources/webgl-shader.ts +4 -1
  145. package/src/adapter/resources/webgl-texture-view.ts +1 -1
  146. package/src/adapter/resources/webgl-texture.ts +180 -398
  147. package/src/adapter/resources/webgl-transform-feedback.ts +2 -2
  148. package/src/adapter/resources/webgl-vertex-array.ts +4 -3
  149. package/src/adapter/webgl-adapter.ts +20 -8
  150. package/src/adapter/webgl-canvas-context.ts +3 -32
  151. package/src/adapter/webgl-device.ts +21 -25
  152. package/src/context/debug/spector-types.ts +5 -0
  153. package/src/context/debug/spector.ts +1 -1
  154. package/src/context/debug/webgl-developer-tools.ts +8 -3
  155. package/src/context/helpers/webgl-extensions.ts +3 -0
  156. package/src/context/parameters/unified-parameter-api.ts +9 -2
  157. package/src/context/parameters/webgl-parameter-tables.ts +2 -0
  158. package/src/context/polyfills/polyfill-webgl1-extensions.ts +1 -0
  159. package/src/context/state-tracker/deep-array-equal.ts +11 -6
  160. package/src/context/state-tracker/webgl-state-tracker.ts +5 -1
  161. package/src/context/state-tracker/with-parameters.ts +1 -1
  162. package/src/index.ts +1 -5
  163. package/dist/adapter/converters/vertex-formats.d.ts.map +0 -1
  164. package/dist/adapter/converters/vertex-formats.js.map +0 -1
  165. package/dist/adapter/helpers/decode-webgl-types.d.ts +0 -26
  166. package/dist/adapter/helpers/decode-webgl-types.d.ts.map +0 -1
  167. package/dist/adapter/helpers/decode-webgl-types.js +0 -102
  168. package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
  169. package/dist/adapter/helpers/get-shader-layout.d.ts.map +0 -1
  170. package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
  171. package/dist/adapter/helpers/typed-array-utils.d.ts +0 -44
  172. package/dist/adapter/helpers/typed-array-utils.d.ts.map +0 -1
  173. package/dist/adapter/helpers/typed-array-utils.js +0 -107
  174. package/dist/adapter/helpers/typed-array-utils.js.map +0 -1
  175. package/dist/deprecated/accessor.d.ts +0 -53
  176. package/dist/deprecated/accessor.d.ts.map +0 -1
  177. package/dist/deprecated/accessor.js +0 -177
  178. package/dist/deprecated/accessor.js.map +0 -1
  179. package/dist/utils/split-uniforms-and-bindings.d.ts +0 -9
  180. package/dist/utils/split-uniforms-and-bindings.d.ts.map +0 -1
  181. package/dist/utils/split-uniforms-and-bindings.js +0 -21
  182. package/dist/utils/split-uniforms-and-bindings.js.map +0 -1
  183. package/src/adapter/helpers/decode-webgl-types.ts +0 -134
  184. package/src/adapter/helpers/typed-array-utils.ts +0 -129
  185. package/src/deprecated/accessor.ts +0 -225
  186. package/src/utils/split-uniforms-and-bindings.ts +0 -31
@@ -5,13 +5,8 @@ import { Texture, log } from '@luma.gl/core';
5
5
  import { GL } from '@luma.gl/constants';
6
6
  import { getTextureFormatWebGL } from "../converters/webgl-texture-table.js";
7
7
  import { convertSamplerParametersToWebGL } from "../converters/sampler-parameters.js";
8
- import { WEBGLSampler } from "./webgl-sampler.js";
8
+ import { withGLParameters } from "../../context/state-tracker/with-parameters.js";
9
9
  import { WEBGLTextureView } from "./webgl-texture-view.js";
10
- import { initializeTextureStorage,
11
- // clearMipLevel,
12
- copyExternalImageToMipLevel, copyCPUDataToMipLevel,
13
- // copyGPUBufferToMipLevel,
14
- getWebGLTextureTarget } from "../helpers/webgl-texture-utils.js";
15
10
  /**
16
11
  * WebGL... the texture API from hell... hopefully made simpler
17
12
  */
@@ -20,12 +15,9 @@ export class WEBGLTexture extends Texture {
20
15
  device;
21
16
  gl;
22
17
  handle;
23
- sampler = undefined; // TODO - currently unused in WebGL. Create dummy sampler?
24
- view = undefined; // TODO - currently unused in WebGL. Create dummy view?
25
- mipmaps;
26
- // Texture type
27
- /** Whether the internal format is compressed */
28
- compressed;
18
+ // @ts-ignore TODO - currently unused in WebGL. Create dummy sampler?
19
+ sampler = undefined;
20
+ view;
29
21
  /**
30
22
  * The WebGL target corresponding to the texture type
31
23
  * @note `target` cannot be modified by bind:
@@ -42,82 +34,52 @@ export class WEBGLTexture extends Texture {
42
34
  glType;
43
35
  /** The WebGL constant corresponding to the WebGPU style constant in format */
44
36
  glInternalFormat;
37
+ /** Whether the internal format is compressed */
38
+ compressed;
45
39
  // state
46
40
  /** Texture binding slot - TODO - move to texture view? */
47
- textureUnit = 0;
41
+ _textureUnit = 0;
48
42
  constructor(device, props) {
49
43
  super(device, props);
50
- // Texture base class strips out the data prop, so we need to add it back in
51
- const propsWithData = { ...this.props };
52
- propsWithData.data = props.data;
53
44
  this.device = device;
54
45
  this.gl = this.device.gl;
46
+ const formatInfo = getTextureFormatWebGL(this.props.format);
55
47
  // Note: In WebGL the texture target defines the type of texture on first bind.
56
48
  this.glTarget = getWebGLTextureTarget(this.props.dimension);
57
- // The target format of this texture
58
- const formatInfo = getTextureFormatWebGL(this.props.format);
59
49
  this.glInternalFormat = formatInfo.internalFormat;
60
50
  this.glFormat = formatInfo.format;
61
51
  this.glType = formatInfo.type;
62
52
  this.compressed = formatInfo.compressed;
63
- this.mipmaps = Boolean(this.props.mipmaps);
64
- this._initialize(propsWithData);
65
- Object.seal(this);
66
- }
67
- /** Initialize texture with supplied props */
68
- // eslint-disable-next-line max-statements
69
- _initialize(propsWithData) {
70
53
  this.handle = this.props.handle || this.gl.createTexture();
71
- this.device._setWebGLDebugMetadata(this.handle, this, {
72
- spector: {
73
- ...this.props,
74
- data: propsWithData.data
75
- }
76
- });
77
- let { width, height } = propsWithData;
78
- if (!width || !height) {
79
- const textureSize = Texture.getTextureDataSize(propsWithData.data);
80
- width = textureSize?.width || 1;
81
- height = textureSize?.height || 1;
54
+ this.device._setWebGLDebugMetadata(this.handle, this, { spector: this.props });
55
+ /**
56
+ * Use WebGL immutable texture storage to allocate and clear texture memory.
57
+ * - texStorage2D should be considered a preferred alternative to texImage2D. It may have lower memory costs than texImage2D in some implementations.
58
+ * - Once texStorage*D has been called, the texture is immutable and can only be updated with texSubImage*(), not texImage()
59
+ * @see https://registry.khronos.org/webgl/specs/latest/2.0/ WebGL 2 spec section 3.7.6
60
+ */
61
+ this.gl.bindTexture(this.glTarget, this.handle);
62
+ const { dimension, width, height, depth, mipLevels, glTarget, glInternalFormat } = this;
63
+ switch (dimension) {
64
+ case '2d':
65
+ case 'cube':
66
+ this.gl.texStorage2D(glTarget, mipLevels, glInternalFormat, width, height);
67
+ break;
68
+ case '2d-array':
69
+ case '3d':
70
+ this.gl.texStorage3D(glTarget, mipLevels, glInternalFormat, width, height, depth);
71
+ break;
72
+ default:
73
+ throw new Error(dimension);
82
74
  }
83
- // Store opts for accessors
84
- this.width = width;
85
- this.height = height;
86
- this.depth = propsWithData.depth;
75
+ this.gl.bindTexture(this.glTarget, null);
76
+ // Set data
77
+ this._initializeData(props.data);
87
78
  // Set texture sampler parameters
88
- this.setSampler(propsWithData.sampler);
79
+ this.setSampler(this.props.sampler);
89
80
  // @ts-ignore TODO - fix types
90
81
  this.view = new WEBGLTextureView(this.device, { ...this.props, texture: this });
91
- this.bind();
92
- initializeTextureStorage(this.gl, this.mipLevels, this);
93
- if (propsWithData.data) {
94
- // prettier-ignore
95
- switch (propsWithData.dimension) {
96
- case '1d':
97
- this.setTexture1DData(propsWithData.data);
98
- break;
99
- case '2d':
100
- this.setTexture2DData(propsWithData.data);
101
- break;
102
- case '3d':
103
- this.setTexture3DData(propsWithData.data);
104
- break;
105
- case 'cube':
106
- this.setTextureCubeData(propsWithData.data);
107
- break;
108
- case '2d-array':
109
- this.setTextureArrayData(propsWithData.data);
110
- break;
111
- case 'cube-array':
112
- this.setTextureCubeArrayData(propsWithData.data);
113
- break;
114
- // @ts-expect-error
115
- default: throw new Error(propsWithData.dimension);
116
- }
117
- }
118
- if (this.mipmaps) {
119
- this.generateMipmap();
120
- }
82
+ Object.seal(this);
121
83
  }
122
84
  destroy() {
123
85
  if (this.handle) {
@@ -132,20 +94,86 @@ export class WEBGLTexture extends Texture {
132
94
  return new WEBGLTextureView(this.device, { ...props, texture: this });
133
95
  }
134
96
  setSampler(sampler = {}) {
135
- let samplerProps;
136
- if (sampler instanceof WEBGLSampler) {
137
- this.sampler = sampler;
138
- samplerProps = sampler.props;
139
- }
140
- else {
141
- this.sampler = new WEBGLSampler(this.device, sampler);
142
- samplerProps = sampler;
143
- }
144
- const parameters = convertSamplerParametersToWebGL(samplerProps);
97
+ super.setSampler(sampler);
98
+ // Apply sampler parameters to texture
99
+ const parameters = convertSamplerParametersToWebGL(this.sampler.props);
145
100
  this._setSamplerParameters(parameters);
146
101
  }
147
- // Call to regenerate mipmaps after modifying texture(s)
148
- generateMipmap(options) {
102
+ copyImageData(options_) {
103
+ const options = this._normalizeCopyImageDataOptions(options_);
104
+ const typedArray = options.data;
105
+ const { width, height, depth } = this;
106
+ const { mipLevel = 0, byteOffset = 0, x = 0, y = 0, z = 0 } = options;
107
+ const { glFormat, glType, compressed } = this;
108
+ const glTarget = getWebGLCubeFaceTarget(this.glTarget, this.dimension, depth);
109
+ const glParameters = {
110
+ [3314]: options.bytesPerRow,
111
+ [32878]: options.rowsPerImage
112
+ };
113
+ this.gl.bindTexture(glTarget, this.handle);
114
+ withGLParameters(this.gl, glParameters, () => {
115
+ switch (this.dimension) {
116
+ case '2d':
117
+ case 'cube':
118
+ if (compressed) {
119
+ // prettier-ignore
120
+ this.gl.compressedTexSubImage2D(glTarget, mipLevel, x, y, width, height, glFormat, typedArray, byteOffset); // , byteLength
121
+ }
122
+ else {
123
+ // prettier-ignore
124
+ this.gl.texSubImage2D(glTarget, mipLevel, x, y, width, height, glFormat, glType, typedArray, byteOffset); // , byteLength
125
+ }
126
+ break;
127
+ case '2d-array':
128
+ case '3d':
129
+ if (compressed) {
130
+ // prettier-ignore
131
+ this.gl.compressedTexSubImage3D(glTarget, mipLevel, x, y, z, width, height, depth, glFormat, typedArray, byteOffset); // , byteLength
132
+ }
133
+ else {
134
+ // prettier-ignore
135
+ this.gl.texSubImage3D(glTarget, mipLevel, x, y, z, width, height, depth, glFormat, glType, typedArray, byteOffset); // , byteLength
136
+ }
137
+ break;
138
+ default:
139
+ // Can never happen in WebGL
140
+ }
141
+ });
142
+ this.gl.bindTexture(glTarget, null);
143
+ }
144
+ copyExternalImage(options_) {
145
+ const options = this._normalizeCopyExternalImageOptions(options_);
146
+ if (options.sourceX || options.sourceY) {
147
+ // requires copyTexSubImage2D from a framebuffer'
148
+ throw new Error('WebGL does not support sourceX/sourceY)');
149
+ }
150
+ const { glFormat, glType } = this;
151
+ const { image, depth, mipLevel, x, y, z, width, height } = options;
152
+ // WebGL cube maps specify faces by overriding target instead of using the depth parameter
153
+ const glTarget = getWebGLCubeFaceTarget(this.glTarget, this.dimension, depth);
154
+ const glParameters = options.flipY ? { [37440]: true } : {};
155
+ this.gl.bindTexture(this.glTarget, this.handle);
156
+ withGLParameters(this.gl, glParameters, () => {
157
+ switch (this.dimension) {
158
+ case '2d':
159
+ case 'cube':
160
+ // prettier-ignore
161
+ this.gl.texSubImage2D(glTarget, mipLevel, x, y, width, height, glFormat, glType, image);
162
+ break;
163
+ case '2d-array':
164
+ case '3d':
165
+ // prettier-ignore
166
+ this.gl.texSubImage3D(glTarget, mipLevel, x, y, z, width, height, depth, glFormat, glType, image);
167
+ break;
168
+ default:
169
+ // Can never happen in WebGL
170
+ }
171
+ });
172
+ this.gl.bindTexture(this.glTarget, null);
173
+ return { width: options.width, height: options.height };
174
+ }
175
+ // WEBGL SPECIFIC
176
+ generateMipmapsWebGL(options) {
149
177
  const isFilterableAndRenderable = this.device.isTextureFormatRenderable(this.props.format) &&
150
178
  this.device.isTextureFormatFilterable(this.props.format);
151
179
  if (!isFilterableAndRenderable) {
@@ -165,149 +193,7 @@ export class WEBGLTexture extends Texture {
165
193
  this.gl.bindTexture(this.glTarget, null);
166
194
  }
167
195
  }
168
- // Image Data Setters
169
- copyExternalImage(options) {
170
- const size = Texture.getExternalImageSize(options.image);
171
- const opts = { ...Texture.defaultCopyExternalImageOptions, ...size, ...options };
172
- const { image, depth, mipLevel, x, y, z, flipY } = opts;
173
- let { width, height } = opts;
174
- const { dimension, glTarget, glFormat, glInternalFormat, glType } = this;
175
- // WebGL will error if we try to copy outside the bounds of the texture
176
- width = Math.min(width, this.width - x);
177
- height = Math.min(height, this.height - y);
178
- if (options.sourceX || options.sourceY) {
179
- // requires copyTexSubImage2D from a framebuffer'
180
- throw new Error('WebGL does not support sourceX/sourceY)');
181
- }
182
- copyExternalImageToMipLevel(this.device.gl, this.handle, image, {
183
- dimension,
184
- mipLevel,
185
- x,
186
- y,
187
- z,
188
- width,
189
- height,
190
- depth,
191
- glFormat,
192
- glInternalFormat,
193
- glType,
194
- glTarget,
195
- flipY
196
- });
197
- return { width: opts.width, height: opts.height };
198
- }
199
- setTexture1DData(data) {
200
- throw new Error('setTexture1DData not supported in WebGL.');
201
- }
202
- /** Set a simple texture */
203
- setTexture2DData(lodData, depth = 0) {
204
- this.bind();
205
- const lodArray = Texture.normalizeTextureData(lodData, this);
206
- // If the user provides multiple LODs, then automatic mipmap
207
- // generation generateMipmap() should be disabled to avoid overwriting them.
208
- if (lodArray.length > 1 && this.props.mipmaps !== false) {
209
- log.warn(`Texture ${this.id} mipmap and multiple LODs.`)();
210
- }
211
- for (let lodLevel = 0; lodLevel < lodArray.length; lodLevel++) {
212
- const imageData = lodArray[lodLevel];
213
- this._setMipLevel(depth, lodLevel, imageData);
214
- }
215
- this.unbind();
216
- }
217
- /**
218
- * Sets a 3D texture
219
- * @param data
220
- */
221
- setTexture3DData(data) {
222
- if (this.props.dimension !== '3d') {
223
- throw new Error(this.id);
224
- }
225
- if (ArrayBuffer.isView(data)) {
226
- this.bind();
227
- copyCPUDataToMipLevel(this.device.gl, data, this);
228
- this.unbind();
229
- }
230
- }
231
- /**
232
- * Set a Texture Cube Data
233
- * @todo - could support TextureCubeArray with depth
234
- * @param data
235
- * @param index
236
- */
237
- setTextureCubeData(data, depth = 0) {
238
- if (this.props.dimension !== 'cube') {
239
- throw new Error(this.id);
240
- }
241
- for (const face of Texture.CubeFaces) {
242
- this.setTextureCubeFaceData(data[face], face);
243
- }
244
- }
245
- /**
246
- * Sets an entire texture array
247
- * @param data
248
- */
249
- setTextureArrayData(data) {
250
- if (this.props.dimension !== '2d-array') {
251
- throw new Error(this.id);
252
- }
253
- throw new Error('setTextureArrayData not implemented.');
254
- }
255
- /**
256
- * Sets an entire texture cube array
257
- * @param data
258
- */
259
- setTextureCubeArrayData(data) {
260
- throw new Error('setTextureCubeArrayData not supported in WebGL2.');
261
- }
262
- setTextureCubeFaceData(lodData, face, depth = 0) {
263
- // assert(this.props.dimension === 'cube');
264
- // If the user provides multiple LODs, then automatic mipmap
265
- // generation generateMipmap() should be disabled to avoid overwriting them.
266
- if (Array.isArray(lodData) && lodData.length > 1 && this.props.mipmaps !== false) {
267
- log.warn(`${this.id} has mipmap and multiple LODs.`)();
268
- }
269
- const faceDepth = Texture.CubeFaces.indexOf(face);
270
- this.setTexture2DData(lodData, faceDepth);
271
- }
272
- // DEPRECATED METHODS
273
- /** Update external texture (video frame or canvas) @deprecated Use ExternalTexture */
274
- update() {
275
- throw new Error('Texture.update() not implemented. Use ExternalTexture');
276
- }
277
- // INTERNAL METHODS
278
- /** @todo update this method to accept LODs */
279
- setImageDataForFace(options) {
280
- const { face, width, height, pixels, data, format = 6408, type = 5121
281
- // generateMipmap = false // TODO
282
- } = options;
283
- const { gl } = this;
284
- const imageData = pixels || data;
285
- this.bind();
286
- if (imageData instanceof Promise) {
287
- imageData.then(resolvedImageData => this.setImageDataForFace(Object.assign({}, options, {
288
- face,
289
- data: resolvedImageData,
290
- pixels: resolvedImageData
291
- })));
292
- }
293
- else if (this.width || this.height) {
294
- gl.texImage2D(face, 0, format, width, height, 0 /* border*/, format, type, imageData);
295
- }
296
- else {
297
- gl.texImage2D(face, 0, format, format, type, imageData);
298
- }
299
- }
300
- _getImageDataMap(faceData) {
301
- for (let i = 0; i < Texture.CubeFaces.length; ++i) {
302
- const faceName = Texture.CubeFaces[i];
303
- if (faceData[faceName]) {
304
- faceData[34069 + i] = faceData[faceName];
305
- delete faceData[faceName];
306
- }
307
- }
308
- return faceData;
309
- }
310
- // RESOURCE METHODS
196
+ // INTERNAL
311
197
  /**
312
198
  * Sets sampler parameters on texture
313
199
  */
@@ -324,11 +210,13 @@ export class WEBGLTexture extends Texture {
324
210
  case 33083:
325
211
  this.gl.texParameterf(this.glTarget, param, value);
326
212
  break;
213
+ case 10240:
327
214
  case 10241:
328
215
  this.gl.texParameteri(this.glTarget, param, value);
329
216
  break;
330
217
  case 10242:
331
218
  case 10243:
219
+ case 32882:
332
220
  this.gl.texParameteri(this.glTarget, param, value);
333
221
  break;
334
222
  case 34046:
@@ -337,121 +225,57 @@ export class WEBGLTexture extends Texture {
337
225
  this.gl.texParameteri(this.glTarget, param, value);
338
226
  }
339
227
  break;
340
- default:
228
+ case 34892:
229
+ case 34893:
341
230
  this.gl.texParameteri(this.glTarget, param, value);
342
231
  break;
343
232
  }
344
233
  }
345
234
  this.gl.bindTexture(this.glTarget, null);
346
235
  }
347
- // INTERNAL SETTERS
348
- /**
349
- * Copy a region of data from a CPU memory buffer into this texture.
350
- * @todo - GLUnpackParameters parameters
351
- */
352
- _setMipLevel(depth, mipLevel, textureData, glTarget = this.glTarget) {
353
- // if (!textureData) {
354
- // clearMipLevel(this.device.gl, {...this, depth, level});
355
- // return;
356
- // }
357
- if (Texture.isExternalImage(textureData)) {
358
- copyExternalImageToMipLevel(this.device.gl, this.handle, textureData, {
359
- ...this,
360
- depth,
361
- mipLevel,
362
- glTarget,
363
- flipY: this.props.flipY
364
- });
365
- return;
366
- }
367
- // @ts-expect-error
368
- if (Texture.isTextureLevelData(textureData)) {
369
- copyCPUDataToMipLevel(this.device.gl, textureData.data, {
370
- ...this,
371
- depth,
372
- mipLevel,
373
- glTarget
374
- });
375
- return;
376
- }
377
- throw new Error('Texture: invalid image data');
378
- }
379
- // HELPERS
380
- getActiveUnit() {
236
+ _getActiveUnit() {
381
237
  return this.gl.getParameter(34016) - 33984;
382
238
  }
383
- bind(textureUnit) {
239
+ _bind(_textureUnit) {
384
240
  const { gl } = this;
385
- if (textureUnit !== undefined) {
386
- this.textureUnit = textureUnit;
387
- gl.activeTexture(33984 + textureUnit);
241
+ if (_textureUnit !== undefined) {
242
+ this._textureUnit = _textureUnit;
243
+ gl.activeTexture(33984 + _textureUnit);
388
244
  }
389
245
  gl.bindTexture(this.glTarget, this.handle);
390
- return textureUnit;
246
+ // @ts-ignore TODO fix types
247
+ return _textureUnit;
391
248
  }
392
- unbind(textureUnit) {
249
+ _unbind(_textureUnit) {
393
250
  const { gl } = this;
394
- if (textureUnit !== undefined) {
395
- this.textureUnit = textureUnit;
396
- gl.activeTexture(33984 + textureUnit);
251
+ if (_textureUnit !== undefined) {
252
+ this._textureUnit = _textureUnit;
253
+ gl.activeTexture(33984 + _textureUnit);
397
254
  }
398
255
  gl.bindTexture(this.glTarget, null);
399
- return textureUnit;
256
+ return _textureUnit;
400
257
  }
401
258
  }
402
- // TODO - Remove when texture refactor is complete
403
- /*
404
- setCubeMapData(options: {
405
- width: number;
406
- height: number;
407
- data: Record<GL, Texture2DData> | Record<TextureCubeFace, Texture2DData>;
408
- format?: any;
409
- type?: any;
410
- /** @deprecated Use .data *
411
- pixels: any;
412
- }): void {
413
- const {gl} = this;
414
-
415
- const {width, height, pixels, data, format = GL.RGBA, type = GL.UNSIGNED_BYTE} = options;
416
-
417
- // pixel data (imageDataMap) is an Object from Face to Image or Promise.
418
- // For example:
419
- // {
420
- // GL.TEXTURE_CUBE_MAP_POSITIVE_X : Image-or-Promise,
421
- // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : Image-or-Promise,
422
- // ... }
423
- // To provide multiple level-of-details (LODs) this can be Face to Array
424
- // of Image or Promise, like this
425
- // {
426
- // GL.TEXTURE_CUBE_MAP_POSITIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],
427
- // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],
428
- // ... }
429
-
430
- const imageDataMap = this._getImageDataMap(pixels || data);
431
-
432
- const resolvedFaces = WEBGLTexture.FACES.map(face => {
433
- const facePixels = imageDataMap[face];
434
- return Array.isArray(facePixels) ? facePixels : [facePixels];
435
- });
436
- this.bind();
437
-
438
- WEBGLTexture.FACES.forEach((face, index) => {
439
- if (resolvedFaces[index].length > 1 && this.props.mipmaps !== false) {
440
- // If the user provides multiple LODs, then automatic mipmap
441
- // generation generateMipmap() should be disabled to avoid overwritting them.
442
- log.warn(`${this.id} has mipmap and multiple LODs.`)();
259
+ // INTERNAL HELPERS
260
+ /** Convert a WebGPU style texture constant to a WebGL style texture constant */
261
+ export function getWebGLTextureTarget(dimension) {
262
+ // prettier-ignore
263
+ switch (dimension) {
264
+ case '1d': break; // not supported in any WebGL version
265
+ case '2d': return 3553; // supported in WebGL1
266
+ case '3d': return 32879; // supported in WebGL2
267
+ case 'cube': return 34067; // supported in WebGL1
268
+ case '2d-array': return 35866; // supported in WebGL2
269
+ case 'cube-array': break; // not supported in any WebGL version
443
270
  }
444
- resolvedFaces[index].forEach((image, lodLevel) => {
445
- // TODO: adjust width & height for LOD!
446
- if (width && height) {
447
- gl.texImage2D(face, lodLevel, format, width, height, 0 /* border*, format, type, image);
448
- } else {
449
- gl.texImage2D(face, lodLevel, format, format, type, image);
450
- }
451
- });
452
- });
453
-
454
- this.unbind();
271
+ throw new Error(dimension);
272
+ }
273
+ /**
274
+ * In WebGL, cube maps specify faces by overriding target instead of using the depth parameter.
275
+ * @note We still bind the texture using GL.TEXTURE_CUBE_MAP, but we need to use the face-specific target when setting mip levels.
276
+ * @returns glTarget unchanged, if dimension !== 'cube'.
277
+ */
278
+ export function getWebGLCubeFaceTarget(glTarget, dimension, level) {
279
+ return dimension === 'cube' ? 34069 + level : glTarget;
455
280
  }
456
- */
457
281
  //# sourceMappingURL=webgl-texture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-texture.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgl-texture.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-texture.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAYpC,OAAO,EAAC,OAAO,EAAE,GAAG,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,EAAE,EAQH,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,qBAAqB,EAAC,6CAA0C;AACxE,OAAO,EAAC,+BAA+B,EAAC,4CAAyC;AACjF,OAAO,EAAC,gBAAgB,EAAC,uDAAoD;AAG7E,OAAO,EAAC,gBAAgB,EAAC,gCAA6B;AAEtD;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO;IACvC,mCAAmC;IAC1B,MAAM,CAAc;IACpB,EAAE,CAAyB;IACpC,MAAM,CAAe;IAErB,qEAAqE;IACrE,OAAO,GAAiB,SAAS,CAAC;IAClC,IAAI,CAAmB;IAEvB;;;;;;;;OAQG;IACH,QAAQ,CAAkB;IAC1B,uDAAuD;IACvD,QAAQ,CAAoB;IAC5B,uDAAuD;IACvD,MAAM,CAAc;IACpB,8EAA8E;IAC9E,gBAAgB,CAAK;IACrB,gDAAgD;IAChD,UAAU,CAAU;IAEpB,QAAQ;IACR,0DAA0D;IAC1D,YAAY,GAAW,CAAC,CAAC;IAEzB,YAAY,MAAc,EAAE,KAAmB;QAC7C,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAErB,IAAI,CAAC,MAAM,GAAG,MAAqB,CAAC;QACpC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAEzB,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE5D,+EAA+E;QAC/E,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QAExC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC,CAAC;QAE7E;;;;;WAKG;QACH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,EAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAC,GAAG,IAAI,CAAC;QACtF,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC;YACV,KAAK,MAAM;gBACT,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC3E,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBAClF,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEzC,WAAW;QACX,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjC,iCAAiC;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,8BAA8B;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAE9E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAEQ,OAAO;QACd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YACvC,sBAAsB;YACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAuB;QAChC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IACtE,CAAC;IAEQ,UAAU,CAAC,UAAkC,EAAE;QACtD,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1B,sCAAsC;QACtC,MAAM,UAAU,GAAG,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,aAAa,CAAC,QAA8B;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;QAE9D,MAAM,UAAU,GAAG,OAAO,CAAC,IAAkB,CAAC;QAC9C,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC;QACpC,MAAM,EAAC,QAAQ,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAC,GAAG,OAAO,CAAC;QACpE,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC;QAC5C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAE9E,MAAM,YAAY,GAAsB;YACtC,MAAsB,EAAE,OAAO,CAAC,WAAW;YAC3C,OAAwB,EAAE,OAAO,CAAC,YAAY;SAC/C,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3C,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE;YAC3C,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvB,KAAK,IAAI,CAAC;gBACV,KAAK,MAAM;oBACT,IAAI,UAAU,EAAE,CAAC;wBACf,kBAAkB;wBAClB,IAAI,CAAC,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,eAAe;oBAC7H,CAAC;yBAAM,CAAC;wBACN,kBAAkB;wBAClB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,eAAe;oBAC3H,CAAC;oBACD,MAAM;gBACR,KAAK,UAAU,CAAC;gBAChB,KAAK,IAAI;oBACP,IAAI,UAAU,EAAE,CAAC;wBACf,kBAAkB;wBAClB,IAAI,CAAC,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,eAAe;oBACvI,CAAC;yBAAM,CAAC;wBACN,kBAAkB;wBAClB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,eAAe;oBACrI,CAAC;oBACD,MAAM;gBACR,QAAQ;gBACR,4BAA4B;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,iBAAiB,CAAC,QAAkC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,kCAAkC,CAAC,QAAQ,CAAC,CAAC;QAElE,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACvC,iDAAiD;YACjD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC;QAChC,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC;QAEjE,0FAA0F;QAC1F,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAsB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,OAAwB,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE9F,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhD,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE;YAC3C,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvB,KAAK,IAAI,CAAC;gBACV,KAAK,MAAM;oBACT,kBAAkB;oBAClB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBACxF,MAAM;gBACR,KAAK,UAAU,CAAC;gBAChB,KAAK,IAAI;oBACP,kBAAkB;oBAClB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBAClG,MAAM;gBACR,QAAQ;gBACR,4BAA4B;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEzC,OAAO,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,CAAC;IACxD,CAAC;IAED,iBAAiB;IAEjB,oBAAoB,CAAC,OAA2B;QAC9C,MAAM,yBAAyB,GAC7B,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,uEAAuE,CAAC,EAAE,CAAC;YAC3F,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,+BAA+B,IAAI,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACjF,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,WAAW;IAEX;;OAEG;IACH,qBAAqB,CAAC,UAA+B;QACnD,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAEjF,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAA8B,CAAC;YACzD,MAAM,KAAK,GAAG,MAAM,CAAC;YAErB,2GAA2G;YAC3G,uEAAuE;YACvE,QAAQ,KAAK,EAAE,CAAC;gBACd,WAAwB;gBACxB;oBACE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBACnD,MAAM;gBAER,WAA2B;gBAC3B;oBACE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBACnD,MAAM;gBAER,WAAuB;gBACvB,WAAuB;gBACvB;oBACE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBACnD,MAAM;gBAER;oBACE,2CAA2C;oBAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,CAAC;wBACrE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBACrD,CAAC;oBACD,MAAM;gBAER,WAA6B;gBAC7B;oBACE,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;oBACnD,MAAM;YACV,CAAC;QACH,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc;QACZ,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,OAAmB,QAAc,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,YAAqB;QACzB,MAAM,EAAC,EAAE,EAAC,GAAG,IAAI,CAAC;QAElB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YACjC,EAAE,CAAC,aAAa,CAAC,QAAc,YAAY,CAAC,CAAC;QAC/C,CAAC;QAED,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,4BAA4B;QAC5B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,YAAqB;QAC3B,MAAM,EAAC,EAAE,EAAC,GAAG,IAAI,CAAC;QAElB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YACjC,EAAE,CAAC,aAAa,CAAC,QAAc,YAAY,CAAC,CAAC;QAC/C,CAAC;QAED,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED,mBAAmB;AAEnB,gFAAgF;AAChF,MAAM,UAAU,qBAAqB,CACnC,SAAkE;IAElE,kBAAkB;IAClB,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,qCAAqC;QACvD,KAAK,IAAI,CAAC,CAAC,YAAqB,CAAC,sBAAsB;QACvD,KAAK,IAAI,CAAC,CAAC,aAAqB,CAAC,sBAAsB;QACvD,KAAK,MAAM,CAAC,CAAC,aAA2B,CAAC,sBAAsB;QAC/D,KAAK,UAAU,CAAC,CAAC,aAA2B,CAAC,sBAAsB;QACnE,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC,qCAAqC;IACjE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAyB,EACzB,SAAkE,EAClE,KAAa;IAEb,OAAO,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,QAAiC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClF,CAAC"}
@@ -27,7 +27,7 @@ export declare class WEBGLTransformFeedback extends TransformFeedback {
27
27
  setBuffers(buffers: Record<string, Buffer | BufferRange>): void;
28
28
  setBuffer(locationOrName: string | number, bufferOrRange: Buffer | BufferRange): void;
29
29
  getBuffer(locationOrName: string | number): Buffer | BufferRange | null;
30
- bind(funcOrHandle?: WebGLTransformFeedback): unknown;
30
+ bind(funcOrHandle?: (() => void) | WebGLTransformFeedback | null): unknown;
31
31
  unbind(): void;
32
32
  /** Extract offsets for bindBufferRange */
33
33
  protected _getBufferRange(bufferOrRange: Buffer | {
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-transform-feedback.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-transform-feedback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAM,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAI5C,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAExC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAM;IAC1C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAC3C;;;;OAIG;IACH,SAAS,UAAQ;IACjB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB;IAerD,OAAO,IAAI,IAAI;IAKxB,KAAK,CAAC,QAAQ,GAAE,iBAAgC,GAAG,IAAI;IAQvD,GAAG,IAAI,IAAI;IAUX,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI;IAW/D,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAmBrF,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI;IAQvE,IAAI,CAAC,YAAY,yBAAc;IAqB/B,MAAM;IAMN,0CAA0C;IAC1C,SAAS,CAAC,eAAe,CACvB,aAAa,EAAE,MAAM,GAAG;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAC,GACjF,QAAQ,CAAC,WAAW,CAAC;IAWxB,SAAS,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAcnE;;;OAGG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAO9B,SAAS,CAAC,cAAc,IAAI,IAAI;IAMhC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CAQhG"}
1
+ {"version":3,"file":"webgl-transform-feedback.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-transform-feedback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAM,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAI5C,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAExC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAM;IAC1C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAC3C;;;;OAIG;IACH,SAAS,UAAQ;IACjB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB;IAerD,OAAO,IAAI,IAAI;IAKxB,KAAK,CAAC,QAAQ,GAAE,iBAAgC,GAAG,IAAI;IAQvD,GAAG,IAAI,IAAI;IAUX,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI;IAW/D,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAmBrF,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI;IAQvE,IAAI,CAAC,YAAY,GAAE,CAAC,MAAM,IAAI,CAAC,GAAG,sBAAsB,GAAG,IAAkB;IAqB7E,MAAM;IAMN,0CAA0C;IAC1C,SAAS,CAAC,eAAe,CACvB,aAAa,EAAE,MAAM,GAAG;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAC,GACjF,QAAQ,CAAC,WAAW,CAAC;IAWxB,SAAS,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAcnE;;;OAGG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAO9B,SAAS,CAAC,cAAc,IAAI,IAAI;IAMhC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,SAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CAQhG"}
@@ -118,7 +118,7 @@ export class WEBGLTransformFeedback extends TransformFeedback {
118
118
  if (isIndex(locationOrName)) {
119
119
  return Number(locationOrName);
120
120
  }
121
- for (const varying of this.layout.varyings) {
121
+ for (const varying of this.layout.varyings || []) {
122
122
  if (locationOrName === varying.name) {
123
123
  return varying.location;
124
124
  }