@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 +34 -0
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +5 -11
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.js +8 -4
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
- package/dist/classic/typed-array-utils.d.ts +2 -0
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/dist.dev.js +8 -4
- package/dist/index.cjs +8 -4
- package/dist.min.js +22 -22
- package/package.json +5 -5
- package/src/adapter/resources/webgl-transform-feedback.ts +13 -16
- package/src/classic/typed-array-utils.ts +2 -0
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>):
|
|
34
|
-
setBuffer(locationOrName: string | number, bufferOrRange: Buffer | BufferRange):
|
|
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):
|
|
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;
|
|
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
|
|
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
|
-
|
|
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
|
|
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":"AAIA,SAAQA,EAAE,QAAgC,oBAAoB;AAE9D,MAAMC,kBAAkB,GAAG,+CAA+C;
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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) {
|