@luma.gl/webgl 9.0.0-alpha.46 → 9.0.0-alpha.47

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.
package/LICENSE ADDED
@@ -0,0 +1,34 @@
1
+ luma.gl is provided under the MIT license
2
+
3
+ Copyright (c) 2020 vis.gl contributors
4
+
5
+ This software includes parts initially developed by Uber and open sourced under MIT license.
6
+ Copyright (c) 2015 Uber Technologies, Inc.
7
+
8
+ This software includes parts of PhiloGL (https://github.com/philogb/philogl)
9
+ under MIT license. PhiloGL parts Copyright © 2013 Sencha Labs.
10
+
11
+ This software includes adaptations of some postprocessing code from
12
+ THREE.js (https://github.com/mrdoob/three.js/) under MIT license.
13
+ THREE.js parts Copyright © 2010-2018 three.js authors.
14
+
15
+ Additional attribution given in specific source files.
16
+
17
+ Permission is hereby granted, free of charge, to any person obtaining a copy
18
+ of this software and associated documentation files (the "Software"), to deal
19
+ in the Software without restriction, including without limitation the rights
20
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
21
+ copies of the Software, and to permit persons to whom the Software is
22
+ furnished to do so, subject to the following conditions:
23
+
24
+ The above copyright notice and this permission notice shall be included in
25
+ all copies or substantial portions of the Software.
26
+
27
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
33
+ THE SOFTWARE.
34
+
@@ -1,12 +1,6 @@
1
1
  import type { PrimitiveTopology, ShaderLayout, TransformFeedbackProps } from '@luma.gl/core';
2
- import { TransformFeedback, Buffer } from '@luma.gl/core';
2
+ import { TransformFeedback, Buffer, BufferRange } from '@luma.gl/core';
3
3
  import { WebGLDevice } from '../webgl-device';
4
- /** For bindRange */
5
- type BufferRange = {
6
- buffer: Buffer;
7
- byteOffset?: number;
8
- byteLength?: number;
9
- };
10
4
  export declare class WEBGLTransformFeedback extends TransformFeedback {
11
5
  readonly device: WebGLDevice;
12
6
  readonly gl2: WebGL2RenderingContext;
@@ -30,8 +24,9 @@ export declare class WEBGLTransformFeedback extends TransformFeedback {
30
24
  destroy(): void;
31
25
  begin(topology?: PrimitiveTopology): void;
32
26
  end(): void;
33
- setBuffers(buffers: Record<string, Buffer | BufferRange>): this;
34
- setBuffer(locationOrName: string | number, bufferOrRange: Buffer | BufferRange): this;
27
+ setBuffers(buffers: Record<string, Buffer | BufferRange>): void;
28
+ setBuffer(locationOrName: string | number, bufferOrRange: Buffer | BufferRange): void;
29
+ getBuffer(locationOrName: string | number): Buffer | BufferRange | null;
35
30
  bind(funcOrHandle?: WebGLTransformFeedback): unknown;
36
31
  unbind(): void;
37
32
  /** Extract offsets for bindBufferRange */
@@ -47,7 +42,6 @@ export declare class WEBGLTransformFeedback extends TransformFeedback {
47
42
  */
48
43
  protected _bindBuffers(): void;
49
44
  protected _unbindBuffers(): void;
50
- protected _bindBuffer(index: number, buffer: Buffer, byteOffset?: number, byteLength?: number): this;
45
+ protected _bindBuffer(index: number, buffer: Buffer, byteOffset?: number, byteLength?: number): void;
51
46
  }
52
- export {};
53
47
  //# sourceMappingURL=webgl-transform-feedback.d.ts.map
@@ -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,EAAC,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAI5C,oBAAoB;AACpB,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC;IACrC,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;IAgBrD,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;IAYxD,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW;IAqB9E,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;IAc1D;;;OAGG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAO9B,SAAS,CAAC,cAAc,IAAI,IAAI;IAMhC,SAAS,CAAC,WAAW,CACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,SAAI,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;CASR"}
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,MAAM,iBAAiB,CAAC;AAI5C,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC;IACrC,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;IAgBrD,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,CACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,UAAU,SAAI,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;CAQR"}
@@ -50,7 +50,6 @@ export class WEBGLTransformFeedback extends TransformFeedback {
50
50
  this.setBuffer(bufferName, buffers[bufferName]);
51
51
  }
52
52
  });
53
- return this;
54
53
  }
55
54
  setBuffer(locationOrName, bufferOrRange) {
56
55
  const location = this._getVaryingIndex(locationOrName);
@@ -62,7 +61,7 @@ export class WEBGLTransformFeedback extends TransformFeedback {
62
61
  if (location < 0) {
63
62
  this.unusedBuffers[locationOrName] = buffer;
64
63
  log.warn(`${this.id} unusedBuffers varying buffer ${locationOrName}`)();
65
- return this;
64
+ return;
66
65
  }
67
66
  this.buffers[location] = {
68
67
  buffer,
@@ -72,7 +71,13 @@ export class WEBGLTransformFeedback extends TransformFeedback {
72
71
  if (!this.bindOnUse) {
73
72
  this._bindBuffer(location, buffer, byteOffset, byteLength);
74
73
  }
75
- return this;
74
+ }
75
+ getBuffer(locationOrName) {
76
+ if (isIndex(locationOrName)) {
77
+ return this.buffers[locationOrName] || null;
78
+ }
79
+ const location = this._getVaryingIndex(locationOrName);
80
+ return location >= 0 ? this.buffers[location] : null;
76
81
  }
77
82
  bind() {
78
83
  let funcOrHandle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.handle;
@@ -149,7 +154,6 @@ export class WEBGLTransformFeedback extends TransformFeedback {
149
154
  } else {
150
155
  this.gl2.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteLength);
151
156
  }
152
- return this;
153
157
  }
154
158
  }
155
159
  function isIndex(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-transform-feedback.js","names":["log","TransformFeedback","GL","WEBGLBuffer","getGLPrimitive","WEBGLTransformFeedback","constructor","device","props","gl2","handle","layout","buffers","unusedBuffers","bindOnUse","_bound","assertWebGL2","createTransformFeedback","setBuffers","Object","seal","destroy","deleteTransformFeedback","begin","topology","arguments","length","undefined","bindTransformFeedback","TRANSFORM_FEEDBACK","_bindBuffers","beginTransformFeedback","end","endTransformFeedback","_unbindBuffers","bind","bufferName","setBuffer","locationOrName","bufferOrRange","location","_getVaryingIndex","buffer","byteLength","byteOffset","_getBufferRange","warn","id","_bindBuffer","funcOrHandle","value","unbind","isIndex","Number","varying","varyings","name","bufferIndex","bindBufferBase","TRANSFORM_FEEDBACK_BUFFER","index","bindBufferRange","isInteger","test"],"sources":["../../../src/adapter/resources/webgl-transform-feedback.ts"],"sourcesContent":["import type {PrimitiveTopology, ShaderLayout, TransformFeedbackProps} from '@luma.gl/core';\nimport {log, TransformFeedback, Buffer} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {WebGLDevice} from '../webgl-device';\nimport {WEBGLBuffer} from '../..';\nimport {getGLPrimitive} from '../helpers/webgl-topology-utils';\n\n/** For bindRange */\ntype BufferRange = {\n buffer: Buffer;\n byteOffset?: number;\n byteLength?: number;\n};\n\nexport class WEBGLTransformFeedback extends TransformFeedback {\n readonly device: WebGLDevice;\n readonly gl2: WebGL2RenderingContext;\n readonly handle: WebGLTransformFeedback;\n\n /**\n * NOTE: The Model already has this information while drawing, but\n * TransformFeedback currently needs it internally, to look up\n * varying information outside of a draw() call.\n */\n readonly layout: ShaderLayout;\n buffers: Record<string, BufferRange> = {};\n unusedBuffers: Record<string, Buffer> = {};\n /**\n * Allows us to avoid a Chrome bug where a buffer that is already bound to a\n * different target cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n * This a major workaround, see: https://github.com/KhronosGroup/WebGL/issues/2346\n */\n bindOnUse = true;\n private _bound: boolean = false;\n\n constructor(device: WebGLDevice, props: TransformFeedbackProps) {\n super(device, props);\n\n device.assertWebGL2();\n this.device = device;\n this.gl2 = device.gl2;\n this.handle = this.props.handle || this.gl2.createTransformFeedback();\n this.layout = this.props.layout;\n\n if (props.buffers) {\n this.setBuffers(props.buffers);\n }\n\n Object.seal(this);\n }\n\n override destroy(): void {\n this.gl2.deleteTransformFeedback(this.handle);\n super.destroy();\n }\n\n begin(topology: PrimitiveTopology = 'point-list'): void {\n this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n if (this.bindOnUse) {\n this._bindBuffers();\n }\n this.gl2.beginTransformFeedback(getGLPrimitive(topology));\n }\n\n end(): void {\n this.gl2.endTransformFeedback();\n if (!this.bindOnUse) {\n this._unbindBuffers();\n }\n this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);\n }\n\n // SUBCLASS\n\n setBuffers(buffers: Record<string, Buffer | BufferRange>) {\n this.buffers = {};\n this.unusedBuffers = {};\n\n this.bind(() => {\n for (const bufferName in buffers) {\n this.setBuffer(bufferName, buffers[bufferName]);\n }\n });\n return this;\n }\n\n setBuffer(locationOrName: string | number, bufferOrRange: Buffer | BufferRange) {\n const location = this._getVaryingIndex(locationOrName);\n const {buffer, byteLength, byteOffset} = this._getBufferRange(bufferOrRange);\n\n if (location < 0) {\n this.unusedBuffers[locationOrName] = buffer;\n log.warn(`${this.id} unusedBuffers varying buffer ${locationOrName}`)();\n return this;\n }\n\n this.buffers[location] = {buffer, byteLength, byteOffset};\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n if (!this.bindOnUse) {\n this._bindBuffer(location, buffer, byteOffset, byteLength);\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, funcOrHandle);\n return this;\n }\n\n let value: unknown;\n\n if (!this._bound) {\n this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n this._bound = true;\n value = funcOrHandle();\n this._bound = false;\n this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n // PRIVATE METHODS\n\n /** Extract offsets for bindBufferRange */\n protected _getBufferRange(\n bufferOrRange: Buffer | {buffer: Buffer; byteOffset?: number; byteLength?: number}\n ): Required<BufferRange> {\n if (bufferOrRange instanceof WEBGLBuffer) {\n return {buffer: bufferOrRange, byteOffset: 0, byteLength: bufferOrRange.byteLength};\n }\n\n // To use bindBufferRange either offset or size must be specified.\n // @ts-expect-error Must be a BufferRange.\n const {buffer, byteOffset = 0, byteLength = bufferOrRange.buffer.byteLength} = bufferOrRange;\n return {buffer, byteOffset, byteLength};\n }\n\n protected _getVaryingIndex(locationOrName: string | number) {\n if (isIndex(locationOrName)) {\n return Number(locationOrName);\n }\n\n for (const varying of this.layout.varyings) {\n if (locationOrName === varying.name) {\n return varying.location;\n }\n }\n\n return -1;\n }\n\n /**\n * Need to avoid chrome bug where buffer that is already bound to a different target\n * cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n */\n protected _bindBuffers(): void {\n for (const bufferIndex in this.buffers) {\n const {buffer, byteLength, byteOffset} = this._getBufferRange(this.buffers[bufferIndex]);\n this._bindBuffer(Number(bufferIndex), buffer, byteOffset, byteLength);\n }\n }\n\n protected _unbindBuffers(): void {\n for (const bufferIndex in this.buffers) {\n this.gl2.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, Number(bufferIndex), null);\n }\n }\n\n protected _bindBuffer(\n index: number,\n buffer: Buffer,\n byteOffset = 0,\n byteLength?: number\n ): this {\n const handle = buffer && (buffer as WEBGLBuffer).handle;\n if (!handle || byteLength === undefined) {\n this.gl2.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);\n } else {\n this.gl2.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteLength);\n }\n return this;\n }\n}\n\n/**\n * Returns true if the given value is an integer, or a string that\n * trivially converts to an integer (only numeric characters).\n */\nfunction isIndex(value: string | number): boolean {\n if (typeof value === 'number') {\n return Number.isInteger(value);\n }\n return /^\\d+$/.test(value);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"webgl-transform-feedback.js","names":["log","TransformFeedback","GL","WEBGLBuffer","getGLPrimitive","WEBGLTransformFeedback","constructor","device","props","gl2","handle","layout","buffers","unusedBuffers","bindOnUse","_bound","assertWebGL2","createTransformFeedback","setBuffers","Object","seal","destroy","deleteTransformFeedback","begin","topology","arguments","length","undefined","bindTransformFeedback","TRANSFORM_FEEDBACK","_bindBuffers","beginTransformFeedback","end","endTransformFeedback","_unbindBuffers","bind","bufferName","setBuffer","locationOrName","bufferOrRange","location","_getVaryingIndex","buffer","byteLength","byteOffset","_getBufferRange","warn","id","_bindBuffer","getBuffer","isIndex","funcOrHandle","value","unbind","Number","varying","varyings","name","bufferIndex","bindBufferBase","TRANSFORM_FEEDBACK_BUFFER","index","bindBufferRange","isInteger","test"],"sources":["../../../src/adapter/resources/webgl-transform-feedback.ts"],"sourcesContent":["import type {PrimitiveTopology, ShaderLayout, TransformFeedbackProps} from '@luma.gl/core';\nimport {log, TransformFeedback, Buffer, BufferRange} from '@luma.gl/core';\nimport {GL} from '@luma.gl/constants';\nimport {WebGLDevice} from '../webgl-device';\nimport {WEBGLBuffer} from '../..';\nimport {getGLPrimitive} from '../helpers/webgl-topology-utils';\n\nexport class WEBGLTransformFeedback extends TransformFeedback {\n readonly device: WebGLDevice;\n readonly gl2: WebGL2RenderingContext;\n readonly handle: WebGLTransformFeedback;\n\n /**\n * NOTE: The Model already has this information while drawing, but\n * TransformFeedback currently needs it internally, to look up\n * varying information outside of a draw() call.\n */\n readonly layout: ShaderLayout;\n buffers: Record<string, BufferRange> = {};\n unusedBuffers: Record<string, Buffer> = {};\n /**\n * Allows us to avoid a Chrome bug where a buffer that is already bound to a\n * different target cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n * This a major workaround, see: https://github.com/KhronosGroup/WebGL/issues/2346\n */\n bindOnUse = true;\n private _bound: boolean = false;\n\n constructor(device: WebGLDevice, props: TransformFeedbackProps) {\n super(device, props);\n\n device.assertWebGL2();\n this.device = device;\n this.gl2 = device.gl2;\n this.handle = this.props.handle || this.gl2.createTransformFeedback();\n this.layout = this.props.layout;\n\n if (props.buffers) {\n this.setBuffers(props.buffers);\n }\n\n Object.seal(this);\n }\n\n override destroy(): void {\n this.gl2.deleteTransformFeedback(this.handle);\n super.destroy();\n }\n\n begin(topology: PrimitiveTopology = 'point-list'): void {\n this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n if (this.bindOnUse) {\n this._bindBuffers();\n }\n this.gl2.beginTransformFeedback(getGLPrimitive(topology));\n }\n\n end(): void {\n this.gl2.endTransformFeedback();\n if (!this.bindOnUse) {\n this._unbindBuffers();\n }\n this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);\n }\n\n // SUBCLASS\n\n setBuffers(buffers: Record<string, Buffer | BufferRange>): void {\n this.buffers = {};\n this.unusedBuffers = {};\n\n this.bind(() => {\n for (const bufferName in buffers) {\n this.setBuffer(bufferName, buffers[bufferName]);\n }\n });\n }\n\n setBuffer(locationOrName: string | number, bufferOrRange: Buffer | BufferRange): void {\n const location = this._getVaryingIndex(locationOrName);\n const {buffer, byteLength, byteOffset} = this._getBufferRange(bufferOrRange);\n\n if (location < 0) {\n this.unusedBuffers[locationOrName] = buffer;\n log.warn(`${this.id} unusedBuffers varying buffer ${locationOrName}`)();\n return;\n }\n\n this.buffers[location] = {buffer, byteLength, byteOffset};\n\n // Need to avoid chrome bug where buffer that is already bound to a different target\n // cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n if (!this.bindOnUse) {\n this._bindBuffer(location, buffer, byteOffset, byteLength);\n }\n }\n\n getBuffer(locationOrName: string | number): Buffer | BufferRange | null {\n if (isIndex(locationOrName)) {\n return this.buffers[locationOrName] || null;\n }\n const location = this._getVaryingIndex(locationOrName);\n return location >= 0 ? this.buffers[location] : null;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, funcOrHandle);\n return this;\n }\n\n let value: unknown;\n\n if (!this._bound) {\n this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, this.handle);\n this._bound = true;\n value = funcOrHandle();\n this._bound = false;\n this.gl2.bindTransformFeedback(GL.TRANSFORM_FEEDBACK, null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n // PRIVATE METHODS\n\n /** Extract offsets for bindBufferRange */\n protected _getBufferRange(\n bufferOrRange: Buffer | {buffer: Buffer; byteOffset?: number; byteLength?: number}\n ): Required<BufferRange> {\n if (bufferOrRange instanceof WEBGLBuffer) {\n return {buffer: bufferOrRange, byteOffset: 0, byteLength: bufferOrRange.byteLength};\n }\n\n // To use bindBufferRange either offset or size must be specified.\n // @ts-expect-error Must be a BufferRange.\n const {buffer, byteOffset = 0, byteLength = bufferOrRange.buffer.byteLength} = bufferOrRange;\n return {buffer, byteOffset, byteLength};\n }\n\n protected _getVaryingIndex(locationOrName: string | number): number {\n if (isIndex(locationOrName)) {\n return Number(locationOrName);\n }\n\n for (const varying of this.layout.varyings) {\n if (locationOrName === varying.name) {\n return varying.location;\n }\n }\n\n return -1;\n }\n\n /**\n * Need to avoid chrome bug where buffer that is already bound to a different target\n * cannot be bound to 'TRANSFORM_FEEDBACK_BUFFER' target.\n */\n protected _bindBuffers(): void {\n for (const bufferIndex in this.buffers) {\n const {buffer, byteLength, byteOffset} = this._getBufferRange(this.buffers[bufferIndex]);\n this._bindBuffer(Number(bufferIndex), buffer, byteOffset, byteLength);\n }\n }\n\n protected _unbindBuffers(): void {\n for (const bufferIndex in this.buffers) {\n this.gl2.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, Number(bufferIndex), null);\n }\n }\n\n protected _bindBuffer(\n index: number,\n buffer: Buffer,\n byteOffset = 0,\n byteLength?: number\n ): void {\n const handle = buffer && (buffer as WEBGLBuffer).handle;\n if (!handle || byteLength === undefined) {\n this.gl2.bindBufferBase(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle);\n } else {\n this.gl2.bindBufferRange(GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteLength);\n }\n }\n}\n\n/**\n * Returns true if the given value is an integer, or a string that\n * trivially converts to an integer (only numeric characters).\n */\nfunction isIndex(value: string | number): boolean {\n if (typeof value === 'number') {\n return Number.isInteger(value);\n }\n return /^\\d+$/.test(value);\n}\n"],"mappings":"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"}
@@ -3,6 +3,7 @@ import { GLDataType, GLPixelType } from '@luma.gl/constants';
3
3
  /**
4
4
  * Converts TYPED ARRAYS to corresponding GL constant
5
5
  * Used to auto deduce gl parameter types
6
+ * @deprecated Use getDataTypeFromTypedArray
6
7
  * @param arrayOrType
7
8
  * @returns
8
9
  */
@@ -10,6 +11,7 @@ export declare function getGLTypeFromTypedArray(arrayOrType: TypedArray): GLData
10
11
  /**
11
12
  * Converts GL constant to corresponding TYPED ARRAY
12
13
  * Used to auto deduce gl parameter types
14
+ * @deprecated Use getTypedArrayFromDataType
13
15
  * @param glType
14
16
  * @param param1
15
17
  * @returns
@@ -1 +1 @@
1
- {"version":3,"file":"typed-array-utils.d.ts","sourceRoot":"","sources":["../../src/classic/typed-array-utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAE,qBAAqB,EAAC,MAAM,eAAe,CAAC;AAChE,OAAO,EAAK,UAAU,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAI/D;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,CAuB3E;AAED;;;;;;GAMG;AAEH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,GAAG,WAAW,EAChC,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,qBAAqB,CAwBvB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,GAAG,IAAI,CAgBP;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG;IACF,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAaA"}
1
+ {"version":3,"file":"typed-array-utils.d.ts","sourceRoot":"","sources":["../../src/classic/typed-array-utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,UAAU,EAAE,qBAAqB,EAAC,MAAM,eAAe,CAAC;AAChE,OAAO,EAAK,UAAU,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAI/D;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,CAuB3E;AAED;;;;;;;GAOG;AAEH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,GAAG,WAAW,EAChC,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,qBAAqB,CAwBvB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,GAAG,IAAI,CAgBP;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG;IACF,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAaA"}
@@ -1 +1 @@
1
- {"version":3,"file":"typed-array-utils.js","names":["GL","ERR_TYPE_DEDUCTION","getGLTypeFromTypedArray","arrayOrType","type","ArrayBuffer","isView","constructor","Float32Array","FLOAT","Uint16Array","UNSIGNED_SHORT","Uint32Array","UNSIGNED_INT","Uint8Array","UNSIGNED_BYTE","Uint8ClampedArray","Int8Array","BYTE","Int16Array","SHORT","Int32Array","INT","Error","getTypedArrayFromGLType","glType","options","clamped","UNSIGNED_SHORT_5_6_5","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","flipRows","data","width","height","bytesPerPixel","temp","bytesPerRow","tempBuffer","y","topOffset","bottomOffset","set","subarray","copyWithin","scalePixels","newWidth","Math","round","newHeight","newData","x","c"],"sources":["../../src/classic/typed-array-utils.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {TypedArray, TypedArrayConstructor} from '@luma.gl/core';\nimport {GL, GLDataType, GLPixelType} from '@luma.gl/constants';\n\nconst ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\n\n/**\n * Converts TYPED ARRAYS to corresponding GL constant\n * Used to auto deduce gl parameter types\n * @param arrayOrType\n * @returns\n */\nexport function getGLTypeFromTypedArray(arrayOrType: TypedArray): GLDataType {\n // If typed array, look up constructor\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n switch (type) {\n case Float32Array:\n return GL.FLOAT;\n case Uint16Array:\n return GL.UNSIGNED_SHORT;\n case Uint32Array:\n return GL.UNSIGNED_INT;\n case Uint8Array:\n return GL.UNSIGNED_BYTE;\n case Uint8ClampedArray:\n return GL.UNSIGNED_BYTE;\n case Int8Array:\n return GL.BYTE;\n case Int16Array:\n return GL.SHORT;\n case Int32Array:\n return GL.INT;\n default:\n throw new Error(ERR_TYPE_DEDUCTION);\n }\n}\n\n/**\n * Converts GL constant to corresponding TYPED ARRAY\n * Used to auto deduce gl parameter types\n * @param glType\n * @param param1\n * @returns\n */\n// eslint-disable-next-line complexity\nexport function getTypedArrayFromGLType(\n glType: GLDataType | GLPixelType,\n options?: {\n clamped?: boolean;\n }\n): TypedArrayConstructor {\n const {clamped = true} = options || {};\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return clamped ? Uint8ClampedArray : Uint8Array;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Failed to deduce typed array type from GL constant');\n }\n}\n\n/**\n * Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)\n * https: *stackoverflow.com/questions/41969562/\n * how-can-i-flip-the-result-of-webglrenderingcontext-readpixels\n * @param param0\n */\nexport function flipRows(options: {\n data: TypedArray;\n width: number;\n height: number;\n bytesPerPixel?: number;\n temp?: Uint8Array;\n}): void {\n const {data, width, height, bytesPerPixel = 4, temp} = options;\n const bytesPerRow = width * bytesPerPixel;\n\n // make a temp buffer to hold one row\n const tempBuffer = temp || new Uint8Array(bytesPerRow);\n for (let y = 0; y < height / 2; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n // make copy of a row on the top half\n tempBuffer.set(data.subarray(topOffset, topOffset + bytesPerRow));\n // copy a row from the bottom half to the top\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n // copy the copy of the top half row to the bottom half\n data.set(tempBuffer, bottomOffset);\n }\n}\n\n\nexport function scalePixels(options: {\n data: TypedArray;\n width: number;\n height: number;\n}): {\n data: Uint8Array;\n width: number;\n height: number;\n} {\n const {data, width, height} = options;\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n for (let y = 0; y < newHeight; y++) {\n for (let x = 0; x < newWidth; x++) {\n for (let c = 0; c < 4; c++) {\n newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n }\n }\n return {data: newData, width: newWidth, height: newHeight};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"typed-array-utils.js","names":["GL","ERR_TYPE_DEDUCTION","getGLTypeFromTypedArray","arrayOrType","type","ArrayBuffer","isView","constructor","Float32Array","FLOAT","Uint16Array","UNSIGNED_SHORT","Uint32Array","UNSIGNED_INT","Uint8Array","UNSIGNED_BYTE","Uint8ClampedArray","Int8Array","BYTE","Int16Array","SHORT","Int32Array","INT","Error","getTypedArrayFromGLType","glType","options","clamped","UNSIGNED_SHORT_5_6_5","UNSIGNED_SHORT_4_4_4_4","UNSIGNED_SHORT_5_5_5_1","flipRows","data","width","height","bytesPerPixel","temp","bytesPerRow","tempBuffer","y","topOffset","bottomOffset","set","subarray","copyWithin","scalePixels","newWidth","Math","round","newHeight","newData","x","c"],"sources":["../../src/classic/typed-array-utils.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport {TypedArray, TypedArrayConstructor} from '@luma.gl/core';\nimport {GL, GLDataType, GLPixelType} from '@luma.gl/constants';\n\nconst ERR_TYPE_DEDUCTION = 'Failed to deduce GL constant from typed array';\n\n/**\n * Converts TYPED ARRAYS to corresponding GL constant\n * Used to auto deduce gl parameter types\n * @deprecated Use getDataTypeFromTypedArray\n * @param arrayOrType\n * @returns\n */\nexport function getGLTypeFromTypedArray(arrayOrType: TypedArray): GLDataType {\n // If typed array, look up constructor\n const type = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n switch (type) {\n case Float32Array:\n return GL.FLOAT;\n case Uint16Array:\n return GL.UNSIGNED_SHORT;\n case Uint32Array:\n return GL.UNSIGNED_INT;\n case Uint8Array:\n return GL.UNSIGNED_BYTE;\n case Uint8ClampedArray:\n return GL.UNSIGNED_BYTE;\n case Int8Array:\n return GL.BYTE;\n case Int16Array:\n return GL.SHORT;\n case Int32Array:\n return GL.INT;\n default:\n throw new Error(ERR_TYPE_DEDUCTION);\n }\n}\n\n/**\n * Converts GL constant to corresponding TYPED ARRAY\n * Used to auto deduce gl parameter types\n * @deprecated Use getTypedArrayFromDataType\n * @param glType\n * @param param1\n * @returns\n */\n// eslint-disable-next-line complexity\nexport function getTypedArrayFromGLType(\n glType: GLDataType | GLPixelType,\n options?: {\n clamped?: boolean;\n }\n): TypedArrayConstructor {\n const {clamped = true} = options || {};\n // Sorted in some order of likelihood to reduce amount of comparisons\n switch (glType) {\n case GL.FLOAT:\n return Float32Array;\n case GL.UNSIGNED_SHORT:\n case GL.UNSIGNED_SHORT_5_6_5:\n case GL.UNSIGNED_SHORT_4_4_4_4:\n case GL.UNSIGNED_SHORT_5_5_5_1:\n return Uint16Array;\n case GL.UNSIGNED_INT:\n return Uint32Array;\n case GL.UNSIGNED_BYTE:\n return clamped ? Uint8ClampedArray : Uint8Array;\n case GL.BYTE:\n return Int8Array;\n case GL.SHORT:\n return Int16Array;\n case GL.INT:\n return Int32Array;\n default:\n throw new Error('Failed to deduce typed array type from GL constant');\n }\n}\n\n/**\n * Flip rows (can be used on arrays returned from `Framebuffer.readPixels`)\n * https: *stackoverflow.com/questions/41969562/\n * how-can-i-flip-the-result-of-webglrenderingcontext-readpixels\n * @param param0\n */\nexport function flipRows(options: {\n data: TypedArray;\n width: number;\n height: number;\n bytesPerPixel?: number;\n temp?: Uint8Array;\n}): void {\n const {data, width, height, bytesPerPixel = 4, temp} = options;\n const bytesPerRow = width * bytesPerPixel;\n\n // make a temp buffer to hold one row\n const tempBuffer = temp || new Uint8Array(bytesPerRow);\n for (let y = 0; y < height / 2; ++y) {\n const topOffset = y * bytesPerRow;\n const bottomOffset = (height - y - 1) * bytesPerRow;\n // make copy of a row on the top half\n tempBuffer.set(data.subarray(topOffset, topOffset + bytesPerRow));\n // copy a row from the bottom half to the top\n data.copyWithin(topOffset, bottomOffset, bottomOffset + bytesPerRow);\n // copy the copy of the top half row to the bottom half\n data.set(tempBuffer, bottomOffset);\n }\n}\n\n\nexport function scalePixels(options: {\n data: TypedArray;\n width: number;\n height: number;\n}): {\n data: Uint8Array;\n width: number;\n height: number;\n} {\n const {data, width, height} = options;\n const newWidth = Math.round(width / 2);\n const newHeight = Math.round(height / 2);\n const newData = new Uint8Array(newWidth * newHeight * 4);\n for (let y = 0; y < newHeight; y++) {\n for (let x = 0; x < newWidth; x++) {\n for (let c = 0; c < 4; c++) {\n newData[(y * newWidth + x) * 4 + c] = data[(y * 2 * width + x * 2) * 4 + c];\n }\n }\n }\n return {data: newData, width: newWidth, height: newHeight};\n}\n"],"mappings":"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"}
package/dist/dist.dev.js CHANGED
@@ -9489,7 +9489,6 @@ ${formattedLog}`)();
9489
9489
  this.setBuffer(bufferName, buffers[bufferName]);
9490
9490
  }
9491
9491
  });
9492
- return this;
9493
9492
  }
9494
9493
  setBuffer(locationOrName, bufferOrRange) {
9495
9494
  const location = this._getVaryingIndex(locationOrName);
@@ -9501,7 +9500,7 @@ ${formattedLog}`)();
9501
9500
  if (location < 0) {
9502
9501
  this.unusedBuffers[locationOrName] = buffer;
9503
9502
  log.warn(`${this.id} unusedBuffers varying buffer ${locationOrName}`)();
9504
- return this;
9503
+ return;
9505
9504
  }
9506
9505
  this.buffers[location] = {
9507
9506
  buffer,
@@ -9511,7 +9510,13 @@ ${formattedLog}`)();
9511
9510
  if (!this.bindOnUse) {
9512
9511
  this._bindBuffer(location, buffer, byteOffset, byteLength);
9513
9512
  }
9514
- return this;
9513
+ }
9514
+ getBuffer(locationOrName) {
9515
+ if (isIndex(locationOrName)) {
9516
+ return this.buffers[locationOrName] || null;
9517
+ }
9518
+ const location = this._getVaryingIndex(locationOrName);
9519
+ return location >= 0 ? this.buffers[location] : null;
9515
9520
  }
9516
9521
  bind(funcOrHandle = this.handle) {
9517
9522
  if (typeof funcOrHandle !== "function") {
@@ -9591,7 +9596,6 @@ ${formattedLog}`)();
9591
9596
  } else {
9592
9597
  this.gl2.bindBufferRange(GLEnum.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteLength);
9593
9598
  }
9594
- return this;
9595
9599
  }
9596
9600
  };
9597
9601
  function isIndex(value) {
package/dist/index.cjs CHANGED
@@ -5763,7 +5763,6 @@ var WEBGLTransformFeedback = class extends import_core26.TransformFeedback {
5763
5763
  this.setBuffer(bufferName, buffers[bufferName]);
5764
5764
  }
5765
5765
  });
5766
- return this;
5767
5766
  }
5768
5767
  setBuffer(locationOrName, bufferOrRange) {
5769
5768
  const location = this._getVaryingIndex(locationOrName);
@@ -5771,13 +5770,19 @@ var WEBGLTransformFeedback = class extends import_core26.TransformFeedback {
5771
5770
  if (location < 0) {
5772
5771
  this.unusedBuffers[locationOrName] = buffer;
5773
5772
  import_core26.log.warn(`${this.id} unusedBuffers varying buffer ${locationOrName}`)();
5774
- return this;
5773
+ return;
5775
5774
  }
5776
5775
  this.buffers[location] = { buffer, byteLength, byteOffset };
5777
5776
  if (!this.bindOnUse) {
5778
5777
  this._bindBuffer(location, buffer, byteOffset, byteLength);
5779
5778
  }
5780
- return this;
5779
+ }
5780
+ getBuffer(locationOrName) {
5781
+ if (isIndex(locationOrName)) {
5782
+ return this.buffers[locationOrName] || null;
5783
+ }
5784
+ const location = this._getVaryingIndex(locationOrName);
5785
+ return location >= 0 ? this.buffers[location] : null;
5781
5786
  }
5782
5787
  bind(funcOrHandle = this.handle) {
5783
5788
  if (typeof funcOrHandle !== "function") {
@@ -5841,7 +5846,6 @@ var WEBGLTransformFeedback = class extends import_core26.TransformFeedback {
5841
5846
  } else {
5842
5847
  this.gl2.bindBufferRange(import_constants27.GL.TRANSFORM_FEEDBACK_BUFFER, index, handle, byteOffset, byteLength);
5843
5848
  }
5844
- return this;
5845
5849
  }
5846
5850
  };
5847
5851
  function isIndex(value) {