@luma.gl/webgl 9.0.0-alpha.11 → 9.0.0-alpha.13
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/dist/adapter/converters/device-parameters.js +1 -12
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +0 -9
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +3 -0
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +4 -0
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +2 -4
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +1 -1
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +2 -4
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +1 -7
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +0 -1
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +0 -2
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +0 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +2 -2
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +4 -32
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +1 -0
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +4 -0
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +2 -2
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +1 -3
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +3 -0
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +2 -3
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +5 -4
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/buffer.d.ts.map +1 -1
- package/dist/classic/buffer.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +1 -7
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +15 -14
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/{context/context-state.d.ts → polyfill/context-data.d.ts} +3 -3
- package/dist/context/polyfill/context-data.d.ts.map +1 -0
- package/dist/context/polyfill/context-data.js +14 -0
- package/dist/context/polyfill/context-data.js.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +4 -4
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +7 -7
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +5 -4
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +0 -1
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +1 -1
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/device-parameters.js +1 -12
- package/dist/es5/adapter/converters/device-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/texture-formats.js +1 -10
- package/dist/es5/adapter/converters/texture-formats.js.map +1 -1
- package/dist/es5/adapter/converters/vertex-formats.js +3 -0
- package/dist/es5/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +4 -0
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/es5/adapter/helpers/get-shader-layout.js +2 -4
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/es5/adapter/helpers/set-uniform.js +1 -1
- package/dist/es5/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +1 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-resource.js +1 -6
- package/dist/es5/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +0 -1
- package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +2 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +2 -38
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +5 -0
- package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-texture.js +1 -7
- package/dist/es5/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/es5/adapter/webgl-canvas-context.js +2 -0
- package/dist/es5/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/es5/adapter/webgl-device.js +4 -3
- package/dist/es5/adapter/webgl-device.js.map +1 -1
- package/dist/es5/classic/buffer.js.map +1 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +1 -7
- package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +10 -9
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/es5/context/polyfill/context-data.js +21 -0
- package/dist/es5/context/polyfill/context-data.js.map +1 -0
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-context.js +4 -4
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-table.js +5 -4
- package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/es5/context/state-tracker/track-context-state.js +0 -1
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/context/state-tracker/with-parameters.js +4 -2
- package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/esm/adapter/converters/device-parameters.js +1 -12
- package/dist/esm/adapter/converters/device-parameters.js.map +1 -1
- package/dist/esm/adapter/converters/texture-formats.js +0 -9
- package/dist/esm/adapter/converters/texture-formats.js.map +1 -1
- package/dist/esm/adapter/converters/vertex-formats.js +3 -0
- package/dist/esm/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +4 -0
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/esm/adapter/helpers/get-shader-layout.js +2 -4
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/esm/adapter/helpers/set-uniform.js +1 -1
- package/dist/esm/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +1 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-resource.js +1 -7
- package/dist/esm/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +0 -2
- package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +2 -2
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +4 -32
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +4 -0
- package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-texture.js +1 -3
- package/dist/esm/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/esm/adapter/webgl-canvas-context.js +3 -0
- package/dist/esm/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/esm/adapter/webgl-device.js +5 -4
- package/dist/esm/adapter/webgl-device.js.map +1 -1
- package/dist/esm/classic/buffer.js.map +1 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +1 -7
- package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +15 -14
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/esm/context/polyfill/context-data.js +14 -0
- package/dist/esm/context/polyfill/context-data.js.map +1 -0
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-context.js +4 -4
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-table.js +5 -4
- package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/esm/context/state-tracker/track-context-state.js +0 -1
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/esm/context/state-tracker/with-parameters.js +1 -1
- package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
- package/package.json +4 -4
- package/src/adapter/converters/device-parameters.ts +11 -11
- package/src/adapter/converters/texture-formats.ts +12 -12
- package/src/adapter/converters/vertex-formats.ts +1 -0
- package/src/adapter/device-helpers/device-features.ts +0 -1
- package/src/adapter/device-helpers/get-device-info.ts +5 -1
- package/src/adapter/helpers/get-shader-layout.ts +18 -15
- package/src/adapter/helpers/set-uniform.ts +1 -1
- package/src/adapter/objects/constants-to-keys.ts +4 -1
- package/src/adapter/objects/webgl-renderbuffer.ts +5 -5
- package/src/adapter/objects/webgl-resource.ts +7 -12
- package/src/adapter/objects/webgl-vertex-array-object.ts +4 -4
- package/src/adapter/resources/webgl-buffer.ts +4 -4
- package/src/adapter/resources/webgl-command-encoder.ts +4 -4
- package/src/adapter/resources/webgl-framebuffer.ts +6 -5
- package/src/adapter/resources/webgl-render-pipeline.ts +24 -23
- package/src/adapter/resources/webgl-sampler.ts +5 -1
- package/src/adapter/resources/webgl-shader.ts +1 -1
- package/src/adapter/resources/webgl-texture.ts +5 -7
- package/src/adapter/webgl-canvas-context.ts +1 -0
- package/src/adapter/webgl-device.ts +10 -12
- package/src/classic/buffer.ts +7 -4
- package/src/context/debug/webgl-developer-tools.ts +7 -7
- package/src/context/parameters/unified-parameter-api.ts +1 -1
- package/src/context/parameters/webgl-parameter-tables.ts +113 -94
- package/src/context/{context/context-state.ts → polyfill/context-data.ts} +6 -10
- package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
- package/src/context/polyfill/polyfill-context.ts +5 -5
- package/src/context/polyfill/polyfill-table.ts +14 -13
- package/src/context/state-tracker/track-context-state.ts +0 -1
- package/src/context/state-tracker/with-parameters.ts +2 -1
- package/dist/context/context/context-state.d.ts.map +0 -1
- package/dist/context/context/context-state.js +0 -21
- package/dist/context/context/context-state.js.map +0 -1
- package/dist/es5/context/context/context-state.js +0 -26
- package/dist/es5/context/context/context-state.js.map +0 -1
- package/dist/esm/context/context/context-state.js +0 -21
- package/dist/esm/context/context/context-state.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classic/buffer.ts"],"names":["DEBUG_DATA_LENGTH","DEPRECATED_PROPS","offset","stride","type","size","divisor","normalized","integer","instanced","isInstanced","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","bytes","deprecatedProps","PROP_CHECKS_SET_PROPS","getWEBGLBufferProps","props","ArrayBuffer","isView","data","byteLength","bufferProps","byteOffset","ClassicBuffer","device","WebGLDevice","attach","setAccessor","Object","assign","accessor","Accessor","seal","handle","removeStats","trackDeallocatedMemory","gl","deleteBuffer","destroyed","subData","Math","round","getBytesPerElement","getBytesPerVertex","Number","isFinite","webglUsage","GL","STATIC_DRAW","debugData","_setData","_setByteLength","buffer","bytesUsed","initialize","options","srcOffset","length","target","webgl2","COPY_WRITE_BUFFER","bindBuffer","undefined","bufferSubData","_inferType","sourceBuffer","readOffset","writeOffset","gl2","COPY_READ_BUFFER","copyBufferSubData","dstData","srcByteOffset","dstOffset","ArrayType","FLOAT","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","min","copyElementCount","getBufferSubData","index","UNIFORM_BUFFER","TRANSFORM_FEEDBACK_BUFFER","bindBufferRange","bindBufferBase","isIndexedBuffer","getData","changed","_getTarget","bufferData","slice","trackAllocatedMemory","Float32Array","sourceElementOffset","BYTES_PER_ELEMENT","getElementCount","pname","value","getBufferParameter","WEBGLBuffer"],"mappings":"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","sourcesContent":["import type {Device, BufferProps, TypedArray} from '@luma.gl/api';\nimport {Buffer, log, assert, checkProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {assertWebGL2Context} from '../context/context/webgl-checks';\nimport {AccessorObject} from '../types';\nimport Accessor from './accessor';\nimport {getGLTypeFromTypedArray, getTypedArrayFromGLType} from './typed-array-utils';\n\nimport WebGLDevice from '../adapter/webgl-device';\nimport WEBGLBuffer from '../adapter/resources/webgl-buffer';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nfunction getWEBGLBufferProps(props: ClassicBufferProps | ArrayBufferView | number): BufferProps {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n return {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n else if (typeof props === 'number') {\n return {byteLength: props as number};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n const bufferProps = {...props as ClassicBufferProps};\n if (bufferProps.offset) {\n bufferProps.byteOffset = bufferProps.offset;\n }\n return bufferProps;\n}\n\n/** WebGL Buffer interface */\nexport type ClassicBufferProps = BufferProps & {\n handle?: WebGLBuffer;\n\n target?: number;\n webglUsage?: number;\n\n accessor?: AccessorObject;\n\n /** @deprecated */\n index?: number;\n /** @deprecated */\n offset?: number;\n /** @deprecated */\n size?: number;\n /** @deprecated */\n type?: number\n}\n\n/** WebGL Buffer interface */\nexport default class ClassicBuffer extends WEBGLBuffer {\n usage: number;\n accessor: Accessor;\n\n constructor(device: Device | WebGLRenderingContext, props?: ClassicBufferProps);\n constructor(device: Device | WebGLRenderingContext, data: ArrayBufferView | number[]);\n constructor(device: Device | WebGLRenderingContext, byteLength: number);\n\n constructor(device: Device | WebGLRenderingContext, props = {}) {\n super(WebGLDevice.attach(device), getWEBGLBufferProps(props));\n\n // Base class initializes\n // this.initialize(props);\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, (props as ClassicBufferProps).accessor));\n\n // infer GL type from supplied typed array\n if (this.props.data) {\n const type = getGLTypeFromTypedArray(this.props.data as TypedArray);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n }\n\n Object.seal(this);\n }\n\n destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.trackDeallocatedMemory();\n this.gl.deleteBuffer(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n write(data: TypedArray, byteOffset?: number): void {\n this.subData({data, offset: byteOffset});\n }\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor: AccessorObject = this.accessor): number {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor: AccessorObject = this.accessor): number {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props: ClassicBufferProps = {}): this {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n // @ts-expect-error\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.webglUsage = props.webglUsage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props: ClassicBufferProps): this {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor: AccessorObject | Accessor): this {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n // @ts-expect-error\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength: number): boolean {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props: ClassicBufferProps) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(options: TypedArray | {data: TypedArray, offset?: number; srcOffset?: number; byteLength?: number, length?: number}) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(options)) {\n options = {data: options};\n }\n\n const {data, offset = 0, srcOffset = 0} = options;\n const byteLength = options.byteLength || options.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n // @ts-expect-error\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n // @ts-expect-error\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n /**\n * Copies part of the data of another buffer into this buffer\n * @note WEBGL2 ONLY\n */\n copyData(options: {\n sourceBuffer: any;\n readOffset?: number;\n writeOffset?: number;\n size: any;\n }): this {\n const {sourceBuffer, readOffset = 0, writeOffset = 0, size} = options;\n const {gl, gl2} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl2?.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n /**\n * Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n * @note WEBGL2 ONLY\n */\n getData(options?: {\n dstData?: any;\n srcByteOffset?: number;\n dstOffset?: number;\n length?: number;\n }): any {\n let {dstData = null, length = 0} = options || {};\n const {srcByteOffset = 0, dstOffset = 0} = options || {};\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl2?.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind(options?: {target?: number; index?: any; offset?: number; size: any}): this {\n const {\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = options || {};\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl2?.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl2?.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind(options?: {target?: any; index?: any}): this {\n const {target = this.target, index = this.accessor && this.accessor.index} = options || {};\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl2?.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData(): {\n data: any;\n changed: boolean;\n } {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, offset: number = 0, byteLength: number = data.byteLength + offset): this {\n assert(ArrayBuffer.isView(data));\n\n this.trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.webglUsage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n this.trackAllocatedMemory(byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength: number, webglUsage = this.webglUsage): this {\n assert(byteLength >= 0);\n\n this.trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n // @ts-expect-error\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, webglUsage);\n this.gl.bindBuffer(target, null);\n\n this.webglUsage = webglUsage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n\n this.trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n // @ts-expect-error\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset: number) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n getParameter(pname: GL): any {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n /** @deprecated Use Buffer.accessor.type */\n get type() {\n return this.accessor.type;\n }\n}\n"],"file":"buffer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/classic/buffer.ts"],"names":["DEBUG_DATA_LENGTH","DEPRECATED_PROPS","offset","stride","type","size","divisor","normalized","integer","instanced","isInstanced","PROP_CHECKS_INITIALIZE","removedProps","replacedProps","bytes","deprecatedProps","PROP_CHECKS_SET_PROPS","getWEBGLBufferProps","props","ArrayBuffer","isView","data","byteLength","bufferProps","byteOffset","ClassicBuffer","device","WebGLDevice","attach","setAccessor","Object","assign","accessor","Accessor","seal","handle","removeStats","trackDeallocatedMemory","gl","deleteBuffer","destroyed","subData","Math","round","getBytesPerElement","getBytesPerVertex","Number","isFinite","webglUsage","GL","STATIC_DRAW","debugData","_setData","_setByteLength","buffer","bytesUsed","initialize","options","srcOffset","length","target","webgl2","COPY_WRITE_BUFFER","bindBuffer","undefined","bufferSubData","_inferType","sourceBuffer","readOffset","writeOffset","gl2","COPY_READ_BUFFER","copyBufferSubData","dstData","srcByteOffset","dstOffset","ArrayType","FLOAT","clamped","sourceAvailableElementCount","_getAvailableElementCount","dstElementOffset","dstAvailableElementCount","dstElementCount","min","copyElementCount","getBufferSubData","index","UNIFORM_BUFFER","TRANSFORM_FEEDBACK_BUFFER","bindBufferRange","bindBufferBase","isIndexedBuffer","getData","changed","_getTarget","bufferData","slice","trackAllocatedMemory","Float32Array","sourceElementOffset","BYTES_PER_ELEMENT","getElementCount","pname","value","getBufferParameter","WEBGLBuffer"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\n\nimport type {Device, BufferProps, TypedArray} from '@luma.gl/api';\nimport {assert, checkProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {assertWebGL2Context} from '../context/context/webgl-checks';\nimport {AccessorObject} from '../types';\nimport Accessor from './accessor';\nimport {getGLTypeFromTypedArray, getTypedArrayFromGLType} from './typed-array-utils';\n\nimport WebGLDevice from '../adapter/webgl-device';\nimport WEBGLBuffer from '../adapter/resources/webgl-buffer';\n\nconst DEBUG_DATA_LENGTH = 10;\n\n// Shared prop checks for constructor and setProps\nconst DEPRECATED_PROPS = {\n offset: 'accessor.offset',\n stride: 'accessor.stride',\n type: 'accessor.type',\n size: 'accessor.size',\n divisor: 'accessor.divisor',\n normalized: 'accessor.normalized',\n integer: 'accessor.integer',\n instanced: 'accessor.divisor',\n isInstanced: 'accessor.divisor'\n};\n\n// Prop checks for constructor\nconst PROP_CHECKS_INITIALIZE = {\n removedProps: {},\n replacedProps: {\n bytes: 'byteLength'\n },\n // new Buffer() with individual accessor props is still used in apps, emit warnings\n deprecatedProps: DEPRECATED_PROPS\n};\n\n// Prop checks for setProps\nconst PROP_CHECKS_SET_PROPS = {\n // Buffer.setProps() with individual accessor props is rare => emit errors\n removedProps: DEPRECATED_PROPS\n};\n\nfunction getWEBGLBufferProps(props: ClassicBufferProps | ArrayBufferView | number): BufferProps {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n return {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n else if (typeof props === 'number') {\n return {byteLength: props as number};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n const bufferProps = {...props as ClassicBufferProps};\n if (bufferProps.offset) {\n bufferProps.byteOffset = bufferProps.offset;\n }\n return bufferProps;\n}\n\n/** WebGL Buffer interface */\nexport type ClassicBufferProps = BufferProps & {\n handle?: WebGLBuffer;\n\n target?: number;\n webglUsage?: number;\n\n accessor?: AccessorObject;\n\n /** @deprecated */\n index?: number;\n /** @deprecated */\n offset?: number;\n /** @deprecated */\n size?: number;\n /** @deprecated */\n type?: number\n}\n\n/** WebGL Buffer interface */\nexport default class ClassicBuffer extends WEBGLBuffer {\n usage: number;\n accessor: Accessor;\n\n constructor(device: Device | WebGLRenderingContext, props?: ClassicBufferProps);\n constructor(device: Device | WebGLRenderingContext, data: ArrayBufferView | number[]);\n constructor(device: Device | WebGLRenderingContext, byteLength: number);\n\n constructor(device: Device | WebGLRenderingContext, props = {}) {\n super(WebGLDevice.attach(device), getWEBGLBufferProps(props));\n\n // Base class initializes\n // this.initialize(props);\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, (props as ClassicBufferProps).accessor));\n\n // infer GL type from supplied typed array\n if (this.props.data) {\n const type = getGLTypeFromTypedArray(this.props.data as TypedArray);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n }\n\n Object.seal(this);\n }\n\n override destroy(): void {\n if (this.handle) {\n this.removeStats();\n this.trackDeallocatedMemory();\n this.gl.deleteBuffer(this.handle);\n // this.handle = null;\n this.destroyed = true;\n }\n }\n\n override write(data: TypedArray, byteOffset?: number): void {\n this.subData({data, offset: byteOffset});\n }\n\n // returns number of elements in the buffer (assuming that the full buffer is used)\n getElementCount(accessor: AccessorObject = this.accessor): number {\n return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));\n }\n\n // returns number of vertices in the buffer (assuming that the full buffer is used)\n getVertexCount(accessor: AccessorObject = this.accessor): number {\n return Math.round(this.byteLength / Accessor.getBytesPerVertex(accessor));\n }\n\n // Creates and initializes the buffer object's data store.\n // Signature: `new Buffer(gl, {data: new Float32Array(...)})`\n // Signature: `new Buffer(gl, new Float32Array(...))`\n // Signature: `new Buffer(gl, 100)`\n initialize(props: ClassicBufferProps = {}): this {\n // Signature `new Buffer(gl, new Float32Array(...)`\n if (ArrayBuffer.isView(props)) {\n props = {data: props};\n }\n\n // Signature: `new Buffer(gl, 100)`\n if (Number.isFinite(props)) {\n // @ts-expect-error\n props = {byteLength: props};\n }\n\n props = checkProps('Buffer', props, PROP_CHECKS_INITIALIZE);\n\n // Initialize member fields\n this.webglUsage = props.webglUsage || GL.STATIC_DRAW;\n this.debugData = null;\n\n // Deprecated: Merge main props and accessor\n this.setAccessor(Object.assign({}, props, props.accessor));\n\n // Set data: (re)initializes the buffer\n if (props.data) {\n this._setData(props.data, props.offset, props.byteLength);\n } else {\n this._setByteLength(props.byteLength || 0);\n }\n\n return this;\n }\n\n setProps(props: ClassicBufferProps): this {\n props = checkProps('Buffer', props, PROP_CHECKS_SET_PROPS);\n\n if ('accessor' in props) {\n this.setAccessor(props.accessor);\n }\n\n return this;\n }\n\n // Optionally stores an accessor with the buffer, makes it easier to use it as an attribute later\n // {type, size = 1, offset = 0, stride = 0, normalized = false, integer = false, divisor = 0}\n setAccessor(accessor: AccessorObject | Accessor): this {\n // NOTE: From luma.gl v7.0, Accessors have an optional `buffer `field\n // (mainly to support \"interleaving\")\n // To avoid confusion, ensure `buffer.accessor` does not have a `buffer.accessor.buffer` field:\n accessor = Object.assign({}, accessor);\n // @ts-expect-error\n delete accessor.buffer;\n\n // This new statement ensures that an \"accessor object\" is re-packaged as an Accessor instance\n this.accessor = new Accessor(accessor);\n return this;\n }\n\n // Allocate a bigger GPU buffer (if the current buffer is not big enough).\n // If a reallocation is triggered it clears the buffer\n // Returns:\n // `true`: buffer was reallocated, data was cleared\n // `false`: buffer was big enough, data is intact\n reallocate(byteLength: number): boolean {\n if (byteLength > this.byteLength) {\n this._setByteLength(byteLength);\n return true;\n }\n this.bytesUsed = byteLength;\n return false;\n }\n\n // Update with new data. Reinitializes the buffer\n setData(props: ClassicBufferProps) {\n return this.initialize(props);\n }\n\n // Updates a subset of a buffer object's data store.\n // Data (Typed Array or ArrayBuffer), length is inferred unless provided\n // Offset into buffer\n // WebGL2 only: Offset into srcData\n // WebGL2 only: Number of bytes to be copied\n subData(options: TypedArray | {data: TypedArray, offset?: number; srcOffset?: number; byteLength?: number, length?: number}) {\n // Signature: buffer.subData(new Float32Array([...]))\n if (ArrayBuffer.isView(options)) {\n options = {data: options};\n }\n\n const {data, offset = 0, srcOffset = 0} = options;\n const byteLength = options.byteLength || options.length;\n\n assert(data);\n\n // Create the buffer - binding it here for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n // @ts-expect-error\n const target = this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n this.gl.bindBuffer(target, this.handle);\n // WebGL2: subData supports additional srcOffset and length parameters\n if (srcOffset !== 0 || byteLength !== undefined) {\n assertWebGL2Context(this.gl);\n // @ts-expect-error\n this.gl.bufferSubData(this.target, offset, data, srcOffset, byteLength);\n } else {\n this.gl.bufferSubData(target, offset, data);\n }\n this.gl.bindBuffer(target, null);\n\n // TODO - update local `data` if offsets are right\n this.debugData = null;\n\n this._inferType(data);\n\n return this;\n }\n\n /**\n * Copies part of the data of another buffer into this buffer\n * @note WEBGL2 ONLY\n */\n copyData(options: {\n sourceBuffer: any;\n readOffset?: number;\n writeOffset?: number;\n size: any;\n }): this {\n const {sourceBuffer, readOffset = 0, writeOffset = 0, size} = options;\n const {gl, gl2} = this;\n assertWebGL2Context(gl);\n\n // Use GL.COPY_READ_BUFFER+GL.COPY_WRITE_BUFFER avoid disturbing other targets and locking type\n gl.bindBuffer(GL.COPY_READ_BUFFER, sourceBuffer.handle);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, this.handle);\n gl2?.copyBufferSubData(GL.COPY_READ_BUFFER, GL.COPY_WRITE_BUFFER, readOffset, writeOffset, size);\n gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n gl.bindBuffer(GL.COPY_WRITE_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n this.debugData = null;\n\n return this;\n }\n\n /**\n * Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.\n * @note WEBGL2 ONLY\n */\n override getData(options?: {\n dstData?: any;\n srcByteOffset?: number;\n dstOffset?: number;\n length?: number;\n }): any {\n let {dstData = null, length = 0} = options || {};\n const {srcByteOffset = 0, dstOffset = 0} = options || {};\n assertWebGL2Context(this.gl);\n\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceAvailableElementCount = this._getAvailableElementCount(srcByteOffset);\n\n const dstElementOffset = dstOffset;\n\n let dstAvailableElementCount;\n let dstElementCount;\n if (dstData) {\n dstElementCount = dstData.length;\n dstAvailableElementCount = dstElementCount - dstElementOffset;\n } else {\n // Allocate ArrayBufferView with enough size to copy all eligible data.\n dstAvailableElementCount = Math.min(\n sourceAvailableElementCount,\n length || sourceAvailableElementCount\n );\n dstElementCount = dstElementOffset + dstAvailableElementCount;\n }\n\n const copyElementCount = Math.min(sourceAvailableElementCount, dstAvailableElementCount);\n length = length || copyElementCount;\n assert(length <= copyElementCount);\n dstData = dstData || new ArrayType(dstElementCount);\n\n // Use GL.COPY_READ_BUFFER to avoid disturbing other targets and locking type\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, this.handle);\n this.gl2?.getBufferSubData(GL.COPY_READ_BUFFER, srcByteOffset, dstData, dstOffset, length);\n this.gl.bindBuffer(GL.COPY_READ_BUFFER, null);\n\n // TODO - update local `data` if offsets are 0\n return dstData;\n }\n\n /**\n * Binds a buffer to a given binding point (target).\n * GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER take an index, and optionally a range.\n * - GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER need an index to affect state\n * - GL.UNIFORM_BUFFER: `offset` must be aligned to GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT.\n * - GL.UNIFORM_BUFFER: `size` must be a minimum of GL.UNIFORM_BLOCK_SIZE_DATA.\n */\n bind(options?: {target?: number; index?: any; offset?: number; size: any}): this {\n const {\n target = this.target, // target for the bind operation\n index = this.accessor && this.accessor.index, // index = index of target (indexed bind point)\n offset = 0,\n size\n } = options || {};\n // NOTE: While GL.TRANSFORM_FEEDBACK_BUFFER and GL.UNIFORM_BUFFER could\n // be used as direct binding points, they will not affect transform feedback or\n // uniform buffer state. Instead indexed bindings need to be made.\n if (target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER) {\n if (size !== undefined) {\n this.gl2?.bindBufferRange(target, index, this.handle, offset, size);\n } else {\n assert(offset === 0); // Make sure offset wasn't supplied\n this.gl2?.bindBufferBase(target, index, this.handle);\n }\n } else {\n this.gl.bindBuffer(target, this.handle);\n }\n\n return this;\n }\n\n unbind(options?: {target?: any; index?: any}): this {\n const {target = this.target, index = this.accessor && this.accessor.index} = options || {};\n const isIndexedBuffer = target === GL.UNIFORM_BUFFER || target === GL.TRANSFORM_FEEDBACK_BUFFER;\n if (isIndexedBuffer) {\n this.gl2?.bindBufferBase(target, index, null);\n } else {\n this.gl.bindBuffer(target, null);\n }\n return this;\n }\n\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n\n // Returns a short initial data array\n getDebugData(): {\n data: any;\n changed: boolean;\n } {\n if (!this.debugData) {\n this.debugData = this.getData({length: Math.min(DEBUG_DATA_LENGTH, this.byteLength)});\n return {data: this.debugData, changed: true};\n }\n return {data: this.debugData, changed: false};\n }\n\n invalidateDebugData() {\n this.debugData = null;\n }\n\n // PRIVATE METHODS\n\n // Allocate a new buffer and initialize to contents of typed array\n _setData(data, offset: number = 0, byteLength: number = data.byteLength + offset): this {\n assert(ArrayBuffer.isView(data));\n\n this.trackDeallocatedMemory();\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, byteLength, this.webglUsage);\n this.gl.bufferSubData(target, offset, data);\n this.gl.bindBuffer(target, null);\n\n this.debugData = data.slice(0, DEBUG_DATA_LENGTH);\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n this.trackAllocatedMemory(byteLength);\n\n // infer GL type from supplied typed array\n const type = getGLTypeFromTypedArray(data);\n assert(type);\n this.setAccessor(new Accessor(this.accessor, {type}));\n return this;\n }\n\n // Allocate a GPU buffer of specified size.\n _setByteLength(byteLength: number, webglUsage = this.webglUsage): this {\n assert(byteLength >= 0);\n\n this.trackDeallocatedMemory();\n\n // Workaround needed for Safari (#291):\n // gl.bufferData with size equal to 0 crashes. Instead create zero sized array.\n let data = byteLength;\n if (byteLength === 0) {\n // @ts-expect-error\n data = new Float32Array(0);\n }\n\n const target = this._getTarget();\n this.gl.bindBuffer(target, this.handle);\n this.gl.bufferData(target, data, webglUsage);\n this.gl.bindBuffer(target, null);\n\n this.webglUsage = webglUsage;\n this.debugData = null;\n this.bytesUsed = byteLength;\n this.byteLength = byteLength;\n\n this.trackAllocatedMemory(byteLength);\n\n return this;\n }\n\n // Binding a buffer for the first time locks the type\n // In WebGL2, use GL.COPY_WRITE_BUFFER to avoid locking the type\n _getTarget() {\n // @ts-expect-error\n return this.gl.webgl2 ? GL.COPY_WRITE_BUFFER : this.target;\n }\n\n _getAvailableElementCount(srcByteOffset: number) {\n const ArrayType = getTypedArrayFromGLType(this.accessor.type || GL.FLOAT, {clamped: false});\n const sourceElementOffset = srcByteOffset / ArrayType.BYTES_PER_ELEMENT;\n return this.getElementCount() - sourceElementOffset;\n }\n\n // Automatically infers type from typed array passed to setData\n // Note: No longer that useful, since type is now autodeduced from the compiled shaders\n _inferType(data) {\n if (!this.accessor.type) {\n this.setAccessor(new Accessor(this.accessor, {type: getGLTypeFromTypedArray(data)}));\n }\n }\n\n // RESOURCE METHODS\n\n getParameter(pname: GL): any {\n this.gl.bindBuffer(this.target, this.handle);\n const value = this.gl.getBufferParameter(this.target, pname);\n this.gl.bindBuffer(this.target, null);\n return value;\n }\n\n // DEPRECATIONS - v7.0\n /** @deprecated Use Buffer.accessor.type */\n get type() {\n return this.accessor.type;\n }\n}\n"],"file":"buffer.js"}
|
|
@@ -16,7 +16,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
16
16
|
|
|
17
17
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
18
18
|
|
|
19
|
-
var _api = require("@luma.gl/api
|
|
19
|
+
var _api = require("@luma.gl/api");
|
|
20
20
|
|
|
21
21
|
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
22
22
|
|
|
@@ -31,12 +31,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
31
31
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
32
32
|
|
|
33
33
|
var WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';
|
|
34
|
-
var DEFAULT_DEBUG_CONTEXT_PROPS = {
|
|
35
|
-
debug: true,
|
|
36
|
-
throwOnError: false,
|
|
37
|
-
break: [],
|
|
38
|
-
webgl2: false
|
|
39
|
-
};
|
|
40
34
|
|
|
41
35
|
function getContextData(gl) {
|
|
42
36
|
gl.luma = gl.luma || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/context/debug/webgl-developer-tools.ts"],"names":["WEBGL_DEBUG_CDN_URL","DEFAULT_DEBUG_CONTEXT_PROPS","debug","throwOnError","break","webgl2","getContextData","gl","luma","loadWebGLDeveloperTools","globalThis","WebGLDebugUtils","global","module","makeDebugContext","props","getDebugContext","getRealContext","data","realContext","log","warn","debugContext","init","GL","glDebug","onGLError","bind","onValidateGLFunc","key","WebGLDebugContext","Object","setPrototypeOf","getPrototypeOf","create","getFunctionString","functionName","functionArgs","Array","from","map","arg","undefined","args","glFunctionArgsToString","slice","length","err","errorMessage","glEnumToString","glName","message","error","Error","functionString","level","isBreakpoint","every","breakOn","indexOf"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport {log, loadScript} from '@luma.gl/api/';\nimport GL from '@luma.gl/constants';\n\nconst WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';\n\ntype DebugContextProps = {\n debug?: boolean;\n throwOnError?: boolean;\n break?: string[];\n webgl2?: boolean;\n};\n\nconst DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {\n debug: true,\n throwOnError: false,\n break: [],\n webgl2: false,\n}\n\n// Helper to get shared context data\nfunction getContextData(gl: any) {\n gl.luma = gl.luma || {};\n return gl.luma;\n}\n\ndeclare global {\n var WebGLDebugUtils: any;\n}\n\n/**\n * Loads Khronos WebGLDeveloperTools from CDN if not already installed \n * const WebGLDebugUtils = require('webgl-debug');\n * @see https://github.com/KhronosGroup/WebGLDeveloperTools\n * @see https://github.com/vorg/webgl-debug\n */\nexport async function loadWebGLDeveloperTools(): Promise<void> {\n if (!globalThis.WebGLDebugUtils) {\n // @ts-expect-error Developer tools expects global to be set\n globalThis.global = globalThis.global || globalThis;\n // @ts-expect-error Developer tools expects global to be set\n globalThis.global.module = {};\n await loadScript(WEBGL_DEBUG_CDN_URL);\n }\n}\n\n// Returns (a potentially new) context with debug instrumentation turned off or on.\n// Note that this actually returns a new context\nexport function makeDebugContext(gl: WebGLRenderingContext, props: DebugContextProps = {}): WebGLRenderingContext | null {\n // Return null to ensure we don't try to create a context in this case (TODO what case is that?)\n if (!gl) {\n return null;\n }\n\n return props.debug ? getDebugContext(gl, props) : getRealContext(gl);\n}\n\n// Returns the real context from either of the real/debug contexts\nfunction getRealContext(gl: WebGLRenderingContext): WebGLRenderingContext {\n const data = getContextData(gl);\n // If the context has a realContext member, it is a debug context so return the realContext\n return data.realContext ? data.realContext : gl;\n}\n\n// Returns the debug context from either of the real/debug contexts\nfunction getDebugContext(gl: WebGLRenderingContext, props: DebugContextProps): WebGLRenderingContext {\n if (!globalThis.WebGLDebugUtils) {\n log.warn('webgl-debug not loaded')();\n return gl;\n }\n\n const data = getContextData(gl);\n\n // If this already has a debug context, return it.\n if (data.debugContext) {\n return data.debugContext;\n }\n\n // Create a new debug context\n globalThis.WebGLDebugUtils.init({...GL, ...gl});\n const glDebug = globalThis.WebGLDebugUtils.makeDebugContext(\n gl,\n onGLError.bind(null, props),\n onValidateGLFunc.bind(null, props)\n );\n\n // Make sure we have all WebGL2 and extension constants (todo dynamic import to circumvent minification?)\n for (const key in GL) {\n if (!(key in glDebug) && typeof GL[key] === 'number') {\n glDebug[key] = GL[key];\n }\n }\n \n // Ensure we have a clean prototype on the instrumented object\n // Note: setPrototypeOf does come with perf warnings, but we already take a bigger perf reduction\n // by synchronizing the WebGL errors after each WebGL call.\n class WebGLDebugContext {}\n Object.setPrototypeOf(glDebug, Object.getPrototypeOf(gl));\n Object.setPrototypeOf(WebGLDebugContext, glDebug);\n const debugContext = Object.create(WebGLDebugContext);\n // Store the debug context\n data.realContext = gl;\n data.debugContext = debugContext;\n debugContext.debug = true;\n\n // Return it\n return debugContext;\n}\n\n// DEBUG TRACING\n\nfunction getFunctionString(functionName: string, functionArgs): string {\n // Cover bug in webgl-debug-tools\n functionArgs = Array.from(functionArgs).map(arg => arg === undefined ? 'undefined' : arg);\n let args = globalThis.WebGLDebugUtils.glFunctionArgsToString(functionName, functionArgs);\n args = `${args.slice(0, 100)}${args.length > 100 ? '...' : ''}`;\n return `gl.${functionName}(${args})`;\n}\n\nfunction onGLError(props: DebugContextProps, err, functionName: string, args: any[]): void {\n // Cover bug in webgl-debug-tools\n args = Array.from(args).map(arg => arg === undefined ? 'undefined' : arg);\n const errorMessage = globalThis.WebGLDebugUtils.glEnumToString(err);\n const functionArgs = globalThis.WebGLDebugUtils.glFunctionArgsToString(functionName, args);\n const glName = props.webgl2 ? 'gl2' : 'gl1';\n const message = `${errorMessage} in ${glName}.${functionName}(${functionArgs})`;\n log.error(message)();\n debugger; // eslint-disable-line\n if (props.throwOnError) {\n throw new Error(message);\n }\n}\n\n// Don't generate function string until it is needed\nfunction onValidateGLFunc(props: DebugContextProps, functionName: string, functionArgs: any[]): void {\n let functionString: string = '';\n if (log.level >= 1) {\n functionString = getFunctionString(functionName, functionArgs);\n log.log(1, functionString)();\n }\n\n if (props.break) {\n functionString = functionString || getFunctionString(functionName, functionArgs);\n const isBreakpoint =\n props.break && props.break.every((breakOn: string) => functionString.indexOf(breakOn) !== -1);\n if (isBreakpoint) {\n debugger; // eslint-disable-line\n }\n }\n\n for (const arg of functionArgs) {\n if (arg === undefined) {\n functionString = functionString || getFunctionString(functionName, functionArgs);\n if (props.throwOnError) {\n throw new Error(`Undefined argument: ${functionString}`);\n } else {\n log.error(`Undefined argument: ${functionString}`)();\n debugger; // eslint-disable-line\n }\n }\n }\n}\n"],"file":"webgl-developer-tools.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/context/debug/webgl-developer-tools.ts"],"names":["WEBGL_DEBUG_CDN_URL","getContextData","gl","luma","loadWebGLDeveloperTools","globalThis","WebGLDebugUtils","global","module","makeDebugContext","props","debug","getDebugContext","getRealContext","data","realContext","log","warn","debugContext","init","GL","glDebug","onGLError","bind","onValidateGLFunc","key","WebGLDebugContext","Object","setPrototypeOf","getPrototypeOf","create","getFunctionString","functionName","functionArgs","Array","from","map","arg","undefined","args","glFunctionArgsToString","slice","length","err","errorMessage","glEnumToString","glName","webgl2","message","error","throwOnError","Error","functionString","level","break","isBreakpoint","every","breakOn","indexOf"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport {log, loadScript} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\n\nconst WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';\n\ntype DebugContextProps = {\n debug?: boolean;\n throwOnError?: boolean;\n break?: string[];\n webgl2?: boolean;\n};\n\n// const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {\n// debug: true,\n// throwOnError: false,\n// break: [],\n// webgl2: false,\n// }\n\n// Helper to get shared context data\nfunction getContextData(gl: any) {\n gl.luma = gl.luma || {};\n return gl.luma;\n}\n\ndeclare global {\n var WebGLDebugUtils: any;\n}\n\n/**\n * Loads Khronos WebGLDeveloperTools from CDN if not already installed \n * const WebGLDebugUtils = require('webgl-debug');\n * @see https://github.com/KhronosGroup/WebGLDeveloperTools\n * @see https://github.com/vorg/webgl-debug\n */\nexport async function loadWebGLDeveloperTools(): Promise<void> {\n if (!globalThis.WebGLDebugUtils) {\n // @ts-expect-error Developer tools expects global to be set\n globalThis.global = globalThis.global || globalThis;\n // @ts-expect-error Developer tools expects global to be set\n globalThis.global.module = {};\n await loadScript(WEBGL_DEBUG_CDN_URL);\n }\n}\n\n// Returns (a potentially new) context with debug instrumentation turned off or on.\n// Note that this actually returns a new context\nexport function makeDebugContext(gl: WebGLRenderingContext, props: DebugContextProps = {}): WebGLRenderingContext | null {\n // Return null to ensure we don't try to create a context in this case (TODO what case is that?)\n if (!gl) {\n return null;\n }\n\n return props.debug ? getDebugContext(gl, props) : getRealContext(gl);\n}\n\n// Returns the real context from either of the real/debug contexts\nfunction getRealContext(gl: WebGLRenderingContext): WebGLRenderingContext {\n const data = getContextData(gl);\n // If the context has a realContext member, it is a debug context so return the realContext\n return data.realContext ? data.realContext : gl;\n}\n\n// Returns the debug context from either of the real/debug contexts\nfunction getDebugContext(gl: WebGLRenderingContext, props: DebugContextProps): WebGLRenderingContext {\n if (!globalThis.WebGLDebugUtils) {\n log.warn('webgl-debug not loaded')();\n return gl;\n }\n\n const data = getContextData(gl);\n\n // If this already has a debug context, return it.\n if (data.debugContext) {\n return data.debugContext;\n }\n\n // Create a new debug context\n globalThis.WebGLDebugUtils.init({...GL, ...gl});\n const glDebug = globalThis.WebGLDebugUtils.makeDebugContext(\n gl,\n onGLError.bind(null, props),\n onValidateGLFunc.bind(null, props)\n );\n\n // Make sure we have all WebGL2 and extension constants (todo dynamic import to circumvent minification?)\n for (const key in GL) {\n if (!(key in glDebug) && typeof GL[key] === 'number') {\n glDebug[key] = GL[key];\n }\n }\n \n // Ensure we have a clean prototype on the instrumented object\n // Note: setPrototypeOf does come with perf warnings, but we already take a bigger perf reduction\n // by synchronizing the WebGL errors after each WebGL call.\n class WebGLDebugContext {}\n Object.setPrototypeOf(glDebug, Object.getPrototypeOf(gl));\n Object.setPrototypeOf(WebGLDebugContext, glDebug);\n const debugContext = Object.create(WebGLDebugContext);\n // Store the debug context\n data.realContext = gl;\n data.debugContext = debugContext;\n debugContext.debug = true;\n\n // Return it\n return debugContext;\n}\n\n// DEBUG TRACING\n\nfunction getFunctionString(functionName: string, functionArgs): string {\n // Cover bug in webgl-debug-tools\n functionArgs = Array.from(functionArgs).map(arg => arg === undefined ? 'undefined' : arg);\n let args = globalThis.WebGLDebugUtils.glFunctionArgsToString(functionName, functionArgs);\n args = `${args.slice(0, 100)}${args.length > 100 ? '...' : ''}`;\n return `gl.${functionName}(${args})`;\n}\n\nfunction onGLError(props: DebugContextProps, err, functionName: string, args: any[]): void {\n // Cover bug in webgl-debug-tools\n args = Array.from(args).map(arg => arg === undefined ? 'undefined' : arg);\n const errorMessage = globalThis.WebGLDebugUtils.glEnumToString(err);\n const functionArgs = globalThis.WebGLDebugUtils.glFunctionArgsToString(functionName, args);\n const glName = props.webgl2 ? 'gl2' : 'gl1';\n const message = `${errorMessage} in ${glName}.${functionName}(${functionArgs})`;\n log.error(message)();\n debugger; // eslint-disable-line\n if (props.throwOnError) {\n throw new Error(message);\n }\n}\n\n// Don't generate function string until it is needed\nfunction onValidateGLFunc(props: DebugContextProps, functionName: string, functionArgs: any[]): void {\n let functionString: string = '';\n if (log.level >= 1) {\n functionString = getFunctionString(functionName, functionArgs);\n log.log(1, functionString)();\n }\n\n if (props.break) {\n functionString = functionString || getFunctionString(functionName, functionArgs);\n const isBreakpoint =\n props.break && props.break.every((breakOn: string) => functionString.indexOf(breakOn) !== -1);\n if (isBreakpoint) {\n debugger; // eslint-disable-line\n }\n }\n\n for (const arg of functionArgs) {\n if (arg === undefined) {\n functionString = functionString || getFunctionString(functionName, functionArgs);\n if (props.throwOnError) {\n throw new Error(`Undefined argument: ${functionString}`);\n } else {\n log.error(`Undefined argument: ${functionString}`)();\n debugger; // eslint-disable-line\n }\n }\n }\n}\n"],"file":"webgl-developer-tools.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/context/parameters/unified-parameter-api.ts"],"names":["setParameters","device","parameters","webglDevice","WebGLDevice","attach","gl","isObjectEmpty","compositeSetters","key","glConstant","Number","setter","GL_PARAMETER_SETTERS","cache","state","compositeSetter","GL_COMPOSITE_PARAMETER_SETTERS","getParameters","GL_PARAMETER_DEFAULTS","getter","GL_PARAMETER_GETTERS","getParameter","parameterKeys","Array","isArray","Object","keys","resetParameters","object"],"mappings":";;;;;;;;;;;AAKA;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/context/parameters/unified-parameter-api.ts"],"names":["setParameters","device","parameters","webglDevice","WebGLDevice","attach","gl","isObjectEmpty","compositeSetters","key","glConstant","Number","setter","GL_PARAMETER_SETTERS","cache","state","compositeSetter","GL_COMPOSITE_PARAMETER_SETTERS","getParameters","GL_PARAMETER_DEFAULTS","getter","GL_PARAMETER_GETTERS","getParameter","parameterKeys","Array","isArray","Object","keys","resetParameters","object"],"mappings":";;;;;;;;;;;AAKA;;AAOA;;;;;;;;AAUO,SAASA,aAAT,CACLC,MADK,EAELC,UAFK,EAGC;AACN,MAAMC,WAAW,GAAGC,qBAAYC,MAAZ,CAAmBJ,MAAnB,CAApB;;AACA,MAAMK,EAAE,GAAGH,WAAW,CAACG,EAAvB;;AAEA,MAAIC,aAAa,CAACL,UAAD,CAAjB,EAA+B;AAC7B;AACD;;AAED,MAAMM,gBAAgB,GAAG,EAAzB;;AAIA,OAAK,IAAMC,GAAX,IAAkBP,UAAlB,EAA8B;AAC5B,QAAMQ,UAAU,GAAGC,MAAM,CAACF,GAAD,CAAzB;AACA,QAAMG,MAAM,GAAGC,2CAAqBJ,GAArB,CAAf;;AACA,QAAIG,MAAJ,EAAY;AAEV,UAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;AAC9BJ,QAAAA,gBAAgB,CAACI,MAAD,CAAhB,GAA2B,IAA3B;AACD,OAFD,MAEO;AAKLA,QAAAA,MAAM,CAACN,EAAD,EAAKJ,UAAU,CAACO,GAAD,CAAf,EAAsBC,UAAtB,CAAN;AACD;AACF;AACF;;AAUD,MAAMI,KAAK,GAAGR,EAAE,CAACS,KAAH,IAAYT,EAAE,CAACS,KAAH,CAASD,KAAnC;;AACA,MAAIA,KAAJ,EAAW;AACT,SAAK,IAAML,IAAX,IAAkBD,gBAAlB,EAAoC;AAElC,UAAMQ,eAAe,GAAGC,qDAA+BR,IAA/B,CAAxB;AAGAO,MAAAA,eAAe,CAACV,EAAD,EAAKJ,UAAL,EAAiBY,KAAjB,CAAf;AACD;AACF;AAGF;;AAgBM,SAASI,aAAT,CACLjB,MADK,EAGS;AAAA,MADdC,UACc,uEAD2DiB,2CAC3D;;AACd,MAAMhB,WAAW,GAAGC,qBAAYC,MAAZ,CAAmBJ,MAAnB,CAApB;;AACA,MAAMK,EAAE,GAAGH,WAAW,CAACG,EAAvB;;AAIA,MAAI,OAAOJ,UAAP,KAAsB,QAA1B,EAAoC;AAElC,QAAMO,GAAG,GAAGP,UAAZ;AACA,QAAMkB,MAAM,GAAGC,2CAAqBZ,GAArB,CAAf;AACA,WAAOW,MAAM,GAAGA,MAAM,CAACd,EAAD,EAAKG,GAAL,CAAT,GAAqBH,EAAE,CAACgB,YAAH,CAAgBb,GAAhB,CAAlC;AACD;;AAED,MAAMc,aAAa,GAAGC,KAAK,CAACC,OAAN,CAAcvB,UAAd,IAA4BA,UAA5B,GAAyCwB,MAAM,CAACC,IAAP,CAAYzB,UAAZ,CAA/D;AAEA,MAAMa,KAAK,GAAG,EAAd;;AAfc,6CAgBIQ,aAhBJ;AAAA;;AAAA;AAgBd,wDAAiC;AAAA,UAAtBd,KAAsB;AAC/B,UAAMW,OAAM,GAAGC,2CAAqBZ,KAArB,CAAf;AACAM,MAAAA,KAAK,CAACN,KAAD,CAAL,GAAaW,OAAM,GAAGA,OAAM,CAACd,EAAD,EAAKK,MAAM,CAACF,KAAD,CAAX,CAAT,GAA6BH,EAAE,CAACgB,YAAH,CAAgBX,MAAM,CAACF,KAAD,CAAtB,CAAhD;AACD;AAnBa;AAAA;AAAA;AAAA;AAAA;;AAoBd,SAAOM,KAAP;AACD;;AAQM,SAASa,eAAT,CAAyB3B,MAAzB,EAAuE;AAC5ED,EAAAA,aAAa,CAACC,MAAD,EAASkB,2CAAT,CAAb;AACD;;AAKD,SAASZ,aAAT,CAAuBsB,MAAvB,EAA+B;AAE7B,OAAK,IAAMpB,GAAX,IAAkBoB,MAAlB,EAA0B;AACxB,WAAO,KAAP;AACD;;AACD,SAAO,IAAP;AACD","sourcesContent":["// Provides a unified API for getting and setting any WebGL parameter\n// Also knows default values of all parameters, enabling fast cache initialization\n// Provides base functionality for the state caching.\nimport {Device} from '@luma.gl/api';\nimport type {GLParameters} from '../../types/webgl';\nimport {\n GL_PARAMETER_DEFAULTS,\n GL_PARAMETER_SETTERS,\n GL_COMPOSITE_PARAMETER_SETTERS,\n GL_PARAMETER_GETTERS\n} from './webgl-parameter-tables';\n\nimport WebGLDevice from '../../adapter/webgl-device';\n\nexport type {GLParameters};\n\n/**\n * Sets any GL parameter regardless of function (gl.blendMode, ...)\n *\n * @note requires a `cache` object to be set on the context (gl.state.cache)\n * This object is used to fill in any missing values for composite setter functions\n */\nexport function setParameters(\n device: Device | WebGLRenderingContext,\n parameters: GLParameters\n): void {\n const webglDevice = WebGLDevice.attach(device);\n const gl = webglDevice.gl;\n\n if (isObjectEmpty(parameters)) {\n return;\n }\n\n const compositeSetters = {};\n\n // HANDLE PRIMITIVE SETTERS (and make note of any composite setters)\n\n for (const key in parameters) {\n const glConstant = Number(key);\n const setter = GL_PARAMETER_SETTERS[key];\n if (setter) {\n // Composite setters should only be called once, so save them\n if (typeof setter === 'string') {\n compositeSetters[setter] = true;\n } else {\n // if (gl[glConstant] !== undefined) {\n // TODO - added above check since this is being called on WebGL2 parameters in WebGL1...\n // TODO - deep equal on values? only call setter if value has changed?\n // NOTE - the setter will automatically update this.state\n setter(gl, parameters[key], glConstant);\n }\n }\n }\n\n // HANDLE COMPOSITE SETTERS\n\n // NOTE: any non-provided values needed by composite setters are filled in from state cache\n // The cache parameter is automatically retrieved from the context\n // This depends on `trackContextState`, which is technically a \"circular\" dependency.\n // But it is too inconvenient to always require a cache parameter here.\n // This is the ONLY external dependency in this module/\n // @ts-expect-error\n const cache = gl.state && gl.state.cache;\n if (cache) {\n for (const key in compositeSetters) {\n // TODO - avoid calling composite setters if values have not changed.\n const compositeSetter = GL_COMPOSITE_PARAMETER_SETTERS[key];\n // Note - if `trackContextState` has been called,\n // the setter will automatically update this.state.cache\n compositeSetter(gl, parameters, cache);\n }\n }\n\n // Add a log for the else case?\n}\n\n/**\n * Reads the entire WebGL state from a context\n\n // default to querying all parameters\n\n * @returns - a newly created map, with values keyed by GL parameters\n *\n * @note Copies the state from a context (gl.getParameter should not be overriden)\n * Reads the entire WebGL state from a context\n *\n * @note This can generates a huge amount of synchronous driver roundtrips and should be\n * considered a very slow operation, to be used only if/when a context already manipulated\n * by external code needs to be synchronized for the first time\n */\nexport function getParameters(\n device: Device | WebGLRenderingContext,\n parameters: keyof GLParameters | (keyof GLParameters)[] | GLParameters = GL_PARAMETER_DEFAULTS\n): GLParameters {\n const webglDevice = WebGLDevice.attach(device);\n const gl = webglDevice.gl;\n\n // support both arrays of parameters and objects (keys represent parameters)\n\n if (typeof parameters === 'number') {\n // single GL enum\n const key = parameters;\n const getter = GL_PARAMETER_GETTERS[key];\n return getter ? getter(gl, key) : gl.getParameter(key);\n }\n\n const parameterKeys = Array.isArray(parameters) ? parameters : Object.keys(parameters);\n\n const state = {};\n for (const key of parameterKeys) {\n const getter = GL_PARAMETER_GETTERS[key];\n state[key] = getter ? getter(gl, Number(key)) : gl.getParameter(Number(key));\n }\n return state;\n}\n\n/**\n * Reset all parameters to a (almost) pure context state\n * @note viewport and scissor will be set to the values in GL_PARAMETER_DEFAULTS,\n * NOT the canvas size dimensions, so they will have to be properly set after\n * calling this function.\n */\nexport function resetParameters(device: Device | WebGLRenderingContext): void {\n setParameters(device, GL_PARAMETER_DEFAULTS);\n}\n\n// Helpers\n\n// Returns true if given object is empty, false otherwise.\nfunction isObjectEmpty(object) {\n // @ts-ignore dummy key variable\n for (const key in object) {\n return false;\n }\n return true;\n}\n"],"file":"unified-parameter-api.js"}
|
|
@@ -47,14 +47,15 @@ var bindFramebuffer = function bindFramebuffer(gl, value, key) {
|
|
|
47
47
|
};
|
|
48
48
|
|
|
49
49
|
var bindBuffer = function bindBuffer(gl, value, key) {
|
|
50
|
-
var
|
|
50
|
+
var _bindingMap;
|
|
51
51
|
|
|
52
|
-
var
|
|
52
|
+
var bindingMap = (_bindingMap = {}, (0, _defineProperty2.default)(_bindingMap, _constants.default.ARRAY_BUFFER_BINDING, _constants.default.ARRAY_BUFFER), (0, _defineProperty2.default)(_bindingMap, _constants.default.COPY_READ_BUFFER_BINDING, _constants.default.COPY_READ_BUFFER), (0, _defineProperty2.default)(_bindingMap, _constants.default.COPY_WRITE_BUFFER_BINDING, _constants.default.COPY_WRITE_BUFFER), (0, _defineProperty2.default)(_bindingMap, _constants.default.PIXEL_PACK_BUFFER_BINDING, _constants.default.PIXEL_PACK_BUFFER), (0, _defineProperty2.default)(_bindingMap, _constants.default.PIXEL_UNPACK_BUFFER_BINDING, _constants.default.PIXEL_UNPACK_BUFFER), _bindingMap);
|
|
53
|
+
var target = bindingMap[key];
|
|
53
54
|
gl.bindBuffer(target, value);
|
|
54
55
|
};
|
|
55
56
|
|
|
56
57
|
function isArray(array) {
|
|
57
|
-
return Array.isArray(array) || ArrayBuffer.isView(array);
|
|
58
|
+
return Array.isArray(array) || ArrayBuffer.isView(array) && !(array instanceof DataView);
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
var GL_PARAMETER_SETTERS = (_GL_PARAMETER_SETTERS = {}, (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.BLEND, enable), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.BLEND_COLOR, function (gl, value) {
|
|
@@ -78,9 +79,9 @@ var GL_PARAMETER_SETTERS = (_GL_PARAMETER_SETTERS = {}, (0, _defineProperty2.def
|
|
|
78
79
|
}), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.RENDERBUFFER_BINDING, function (gl, value) {
|
|
79
80
|
return gl.bindRenderbuffer(_constants.default.RENDERBUFFER, value);
|
|
80
81
|
}), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.TRANSFORM_FEEDBACK_BINDING, function (gl, value) {
|
|
81
|
-
var
|
|
82
|
+
var _bindTransformFeedbac, _ref;
|
|
82
83
|
|
|
83
|
-
return (
|
|
84
|
+
return (_bindTransformFeedbac = (_ref = gl).bindTransformFeedback) === null || _bindTransformFeedbac === void 0 ? void 0 : _bindTransformFeedbac.call(_ref, _constants.default.TRANSFORM_FEEDBACK, value);
|
|
84
85
|
}), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.VERTEX_ARRAY_BINDING, function (gl, value) {
|
|
85
86
|
return gl.bindVertexArray(value);
|
|
86
87
|
}), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.FRAMEBUFFER_BINDING, bindFramebuffer), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.READ_FRAMEBUFFER_BINDING, bindFramebuffer), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.ARRAY_BUFFER_BINDING, bindBuffer), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.COPY_READ_BUFFER_BINDING, bindBuffer), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.COPY_WRITE_BUFFER_BINDING, bindBuffer), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.PIXEL_PACK_BUFFER_BINDING, bindBuffer), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.PIXEL_UNPACK_BUFFER_BINDING, bindBuffer), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, _constants.default.FRONT_FACE, function (gl, value) {
|
|
@@ -105,11 +106,11 @@ var GL_PARAMETER_SETTERS = (_GL_PARAMETER_SETTERS = {}, (0, _defineProperty2.def
|
|
|
105
106
|
}), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, "blendColor", function blendColor(gl, value) {
|
|
106
107
|
return gl.blendColor.apply(gl, (0, _toConsumableArray2.default)(value));
|
|
107
108
|
}), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, "blendEquation", function blendEquation(gl, args) {
|
|
108
|
-
|
|
109
|
-
gl.blendEquationSeparate.apply(gl, (0, _toConsumableArray2.default)(
|
|
109
|
+
var separateModes = typeof args === 'number' ? [args, args] : args;
|
|
110
|
+
gl.blendEquationSeparate.apply(gl, (0, _toConsumableArray2.default)(separateModes));
|
|
110
111
|
}), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, "blendFunc", function blendFunc(gl, args) {
|
|
111
|
-
|
|
112
|
-
gl.blendFuncSeparate.apply(gl, (0, _toConsumableArray2.default)(
|
|
112
|
+
var separateFuncs = (args === null || args === void 0 ? void 0 : args.length) === 2 ? [].concat((0, _toConsumableArray2.default)(args), (0, _toConsumableArray2.default)(args)) : args;
|
|
113
|
+
gl.blendFuncSeparate.apply(gl, (0, _toConsumableArray2.default)(separateFuncs));
|
|
113
114
|
}), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, "clearColor", function clearColor(gl, value) {
|
|
114
115
|
return gl.clearColor.apply(gl, (0, _toConsumableArray2.default)(value));
|
|
115
116
|
}), (0, _defineProperty2.default)(_GL_PARAMETER_SETTERS, "clearDepth", function clearDepth(gl, value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/context/parameters/webgl-parameter-tables.ts"],"names":["GL_PARAMETER_DEFAULTS","GL","BLEND","BLEND_COLOR","Float32Array","BLEND_EQUATION_RGB","FUNC_ADD","BLEND_EQUATION_ALPHA","BLEND_SRC_RGB","ONE","BLEND_DST_RGB","ZERO","BLEND_SRC_ALPHA","BLEND_DST_ALPHA","COLOR_CLEAR_VALUE","COLOR_WRITEMASK","CULL_FACE","CULL_FACE_MODE","BACK","DEPTH_TEST","DEPTH_CLEAR_VALUE","DEPTH_FUNC","LESS","DEPTH_RANGE","DEPTH_WRITEMASK","DITHER","CURRENT_PROGRAM","FRAMEBUFFER_BINDING","RENDERBUFFER_BINDING","VERTEX_ARRAY_BINDING","ARRAY_BUFFER_BINDING","FRONT_FACE","CCW","GENERATE_MIPMAP_HINT","DONT_CARE","LINE_WIDTH","POLYGON_OFFSET_FILL","POLYGON_OFFSET_FACTOR","POLYGON_OFFSET_UNITS","SAMPLE_ALPHA_TO_COVERAGE","SAMPLE_COVERAGE","SAMPLE_COVERAGE_VALUE","SAMPLE_COVERAGE_INVERT","SCISSOR_TEST","SCISSOR_BOX","Int32Array","STENCIL_TEST","STENCIL_CLEAR_VALUE","STENCIL_WRITEMASK","STENCIL_BACK_WRITEMASK","STENCIL_FUNC","ALWAYS","STENCIL_REF","STENCIL_VALUE_MASK","STENCIL_BACK_FUNC","STENCIL_BACK_REF","STENCIL_BACK_VALUE_MASK","STENCIL_FAIL","KEEP","STENCIL_PASS_DEPTH_FAIL","STENCIL_PASS_DEPTH_PASS","STENCIL_BACK_FAIL","STENCIL_BACK_PASS_DEPTH_FAIL","STENCIL_BACK_PASS_DEPTH_PASS","VIEWPORT","PACK_ALIGNMENT","UNPACK_ALIGNMENT","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_COLORSPACE_CONVERSION_WEBGL","BROWSER_DEFAULT_WEBGL","TRANSFORM_FEEDBACK_BINDING","COPY_READ_BUFFER_BINDING","COPY_WRITE_BUFFER_BINDING","PIXEL_PACK_BUFFER_BINDING","PIXEL_UNPACK_BUFFER_BINDING","FRAGMENT_SHADER_DERIVATIVE_HINT","READ_FRAMEBUFFER_BINDING","RASTERIZER_DISCARD","PACK_ROW_LENGTH","PACK_SKIP_PIXELS","PACK_SKIP_ROWS","UNPACK_ROW_LENGTH","UNPACK_IMAGE_HEIGHT","UNPACK_SKIP_PIXELS","UNPACK_SKIP_ROWS","UNPACK_SKIP_IMAGES","enable","gl","value","key","disable","hint","pixelStorei","bindFramebuffer","target","DRAW_FRAMEBUFFER","FRAMEBUFFER","READ_FRAMEBUFFER","bindBuffer","ARRAY_BUFFER","COPY_READ_BUFFER","COPY_WRITE_BUFFER","PIXEL_PACK_BUFFER","PIXEL_UNPACK_BUFFER","isArray","array","Array","ArrayBuffer","isView","GL_PARAMETER_SETTERS","blendColor","clearColor","colorMask","cullFace","clearDepth","depthFunc","depthRange","depthMask","useProgram","bindRenderbuffer","RENDERBUFFER","bindTransformFeedback","TRANSFORM_FEEDBACK","bindVertexArray","frontFace","lineWidth","scissor","clearStencil","stencilMaskSeparate","FRONT","viewport","framebuffer","handle","args","blendEquationSeparate","length","blendFuncSeparate","polygonOffset","sampleCoverage","mask","backMask","func","ref","backFunc","backRef","stencilFuncSeparate","sfail","dpfail","dppass","backSfail","backDpfail","backDppass","stencilOpSeparate","getValue","glEnum","values","cache","undefined","GL_COMPOSITE_PARAMETER_SETTERS","blendEquation","blendFunc","stencilFuncFront","stencilFuncBack","stencilOpFront","stencilOpBack","GL_HOOKED_SETTERS","update","capability","pname","DRAW_FRAMEBUFFER_BINDING","buffer","valueChanged","r","g","b","a","mode","modeRGB","modeAlpha","src","dst","srcRGB","dstRGB","srcAlpha","dstAlpha","depth","s","zNear","zFar","face","width","factor","units","invert","x","y","height","stencilMask","stencilFunc","stencilOp","fail","zfail","zpass","isEnabled","GL_PARAMETER_GETTERS","NON_CACHE_PARAMETERS","Set","ACTIVE_TEXTURE","TRANSFORM_FEEDBACK_ACTIVE","TRANSFORM_FEEDBACK_PAUSED","TRANSFORM_FEEDBACK_BUFFER_BINDING","UNIFORM_BUFFER_BINDING","ELEMENT_ARRAY_BUFFER_BINDING","IMPLEMENTATION_COLOR_READ_FORMAT","IMPLEMENTATION_COLOR_READ_TYPE","READ_BUFFER","DRAW_BUFFER0","DRAW_BUFFER1","DRAW_BUFFER2","DRAW_BUFFER3","DRAW_BUFFER4","DRAW_BUFFER5","DRAW_BUFFER6","DRAW_BUFFER7","DRAW_BUFFER8","DRAW_BUFFER9","DRAW_BUFFER10","DRAW_BUFFER11","DRAW_BUFFER12","DRAW_BUFFER13","DRAW_BUFFER14","DRAW_BUFFER15","SAMPLER_BINDING","TEXTURE_BINDING_2D","TEXTURE_BINDING_2D_ARRAY","TEXTURE_BINDING_3D","TEXTURE_BINDING_CUBE_MAP"],"mappings":"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","sourcesContent":["// Tables describing WebGL parameters\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\nimport type {GLParameters} from '../../types/webgl';\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS: GLParameters = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n [GL.CURRENT_PROGRAM]: null,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.RENDERBUFFER_BINDING]: null,\n [GL.VERTEX_ARRAY_BINDING]: null,\n [GL.ARRAY_BUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.TRANSFORM_FEEDBACK_BINDING]: null,\n [GL.COPY_READ_BUFFER_BINDING]: null,\n [GL.COPY_WRITE_BUFFER_BINDING]: null,\n [GL.PIXEL_PACK_BUFFER_BINDING]: null,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: null,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl, value, key) => (value ? gl.enable(key) : gl.disable(key));\nconst hint = (gl, value, key) => gl.hint(key, value);\nconst pixelStorei = (gl, value, key) => gl.pixelStorei(key, value);\n\nconst bindFramebuffer = (gl, value, key) => {\n let target;\n if (key === GL.FRAMEBUFFER_BINDING) {\n target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n } else {\n // GL.READ_FRAMEBUFFER_BINDING\n target = GL.READ_FRAMEBUFFER;\n }\n return gl.bindFramebuffer(target, value);\n};\n\nconst bindBuffer = (gl, value, key) => {\n const target = ({\n [GL.ARRAY_BUFFER_BINDING]: [GL.ARRAY_BUFFER],\n [GL.COPY_READ_BUFFER_BINDING]: [GL.COPY_READ_BUFFER],\n [GL.COPY_WRITE_BUFFER_BINDING]: [GL.COPY_WRITE_BUFFER],\n [GL.PIXEL_PACK_BUFFER_BINDING]: [GL.PIXEL_PACK_BUFFER],\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: [GL.PIXEL_UNPACK_BUFFER]\n })[key];\n\n gl.bindBuffer(target, value);\n};\n\n// Utility\nfunction isArray(array) {\n return Array.isArray(array) || ArrayBuffer.isView(array);\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl, value) => gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl, value) => gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl, value) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl, value) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n\n [GL.CURRENT_PROGRAM]: (gl, value) => gl.useProgram(value),\n [GL.RENDERBUFFER_BINDING]: (gl, value) => gl.bindRenderbuffer(GL.RENDERBUFFER, value),\n [GL.TRANSFORM_FEEDBACK_BINDING]: (gl, value) => gl.bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),\n [GL.VERTEX_ARRAY_BINDING]: (gl, value) => gl.bindVertexArray(value),\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,\n\n // Buffers\n [GL.ARRAY_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_READ_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_WRITE_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,\n\n [GL.FRONT_FACE]: (gl, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl, value) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl, value) => gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl, value) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl, value) => gl.blendColor(...value),\n blendEquation: (gl, args) => {\n args = isArray(args) ? args : [args, args];\n gl.blendEquationSeparate(...args);\n },\n blendFunc: (gl, args) => {\n args = isArray(args) && args.length === 2 ? [...args, ...args] : args;\n gl.blendFuncSeparate(...args);\n },\n\n clearColor: (gl, value) => gl.clearColor(...value),\n clearDepth: (gl, value) => gl.clearDepth(value),\n clearStencil: (gl, value) => gl.clearStencil(value),\n\n colorMask: (gl, value) => gl.colorMask(...value),\n\n cull: (gl, value) => (value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE)),\n cullFace: (gl, value) => gl.cullFace(value),\n\n depthTest: (gl, value) => (value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST)),\n depthFunc: (gl, value) => gl.depthFunc(value),\n depthMask: (gl, value) => gl.depthMask(value),\n depthRange: (gl, value) => gl.depthRange(...value),\n\n dither: (gl, value) => (value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER)),\n\n derivativeHint: (gl, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl, value) => gl.frontFace(value),\n\n mipmapHint: (gl, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl, value) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl, value) => gl.sampleCoverage(...value),\n\n scissorTest: (gl, value) => (value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST)),\n scissor: (gl, value) => gl.scissor(...value),\n\n stencilTest: (gl, value) => (value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST)),\n stencilMask: (gl, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl, value) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\ntype UpdateFunc = (params: Record<string, any>) => void;\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update: UpdateFunc, capability) =>\n update({\n [capability]: true\n }),\n disable: (update: UpdateFunc, capability) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update: UpdateFunc, pname, value) =>\n update({\n [pname]: value\n }),\n hint: (update: UpdateFunc, pname, hint) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n useProgram: (update: UpdateFunc, value) => update({\n [GL.CURRENT_PROGRAM]: value,\n }),\n bindRenderbuffer: (update: UpdateFunc, target, value) => update({\n [GL.RENDERBUFFER_BINDING]: value\n }),\n bindTransformFeedback: (update: UpdateFunc, target, value) => update({\n [GL.TRANSFORM_FEEDBACK_BINDING]: value\n }),\n bindVertexArray: (update: UpdateFunc, value) => update({\n [GL.VERTEX_ARRAY_BINDING]: value\n }),\n\n bindFramebuffer: (update: UpdateFunc, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n bindBuffer: (update: UpdateFunc, target, buffer) => {\n const pname = ({\n [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],\n [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],\n [GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],\n [GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],\n [GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]\n })[target];\n\n if (pname) {\n return update({[pname]: buffer});\n }\n // targets that should not be cached\n return {valueChanged: true};\n },\n\n blendColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update: UpdateFunc, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update: UpdateFunc, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update: UpdateFunc, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update: UpdateFunc, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update: UpdateFunc, depth: number) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update: UpdateFunc, s: number) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update: UpdateFunc, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update: UpdateFunc, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update: UpdateFunc, zNear: number, zFar: number) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update: UpdateFunc, mask: number) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update: UpdateFunc, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update: UpdateFunc, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update: UpdateFunc, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update: UpdateFunc, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update: UpdateFunc, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update: UpdateFunc, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update: UpdateFunc, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update: UpdateFunc, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update: UpdateFunc, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update: UpdateFunc, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n\nexport const NON_CACHE_PARAMETERS = new Set([\n // setter not intercepted\n GL.ACTIVE_TEXTURE,\n GL.TRANSFORM_FEEDBACK_ACTIVE,\n GL.TRANSFORM_FEEDBACK_PAUSED,\n\n // setters bindBufferRange/bindBufferBase cannot be pruned based on cache\n GL.TRANSFORM_FEEDBACK_BUFFER_BINDING,\n GL.UNIFORM_BUFFER_BINDING,\n\n // states depending on VERTEX_ARRAY_BINDING\n GL.ELEMENT_ARRAY_BUFFER_BINDING,\n // states depending on READ_FRAMEBUFFER_BINDING\n GL.IMPLEMENTATION_COLOR_READ_FORMAT,\n GL.IMPLEMENTATION_COLOR_READ_TYPE,\n // states depending on FRAMEBUFFER_BINDING\n GL.READ_BUFFER,\n GL.DRAW_BUFFER0,\n GL.DRAW_BUFFER1,\n GL.DRAW_BUFFER2,\n GL.DRAW_BUFFER3,\n GL.DRAW_BUFFER4,\n GL.DRAW_BUFFER5,\n GL.DRAW_BUFFER6,\n GL.DRAW_BUFFER7,\n GL.DRAW_BUFFER8,\n GL.DRAW_BUFFER9,\n GL.DRAW_BUFFER10,\n GL.DRAW_BUFFER11,\n GL.DRAW_BUFFER12,\n GL.DRAW_BUFFER13,\n GL.DRAW_BUFFER14,\n GL.DRAW_BUFFER15,\n // states depending on ACTIVE_TEXTURE\n GL.SAMPLER_BINDING,\n GL.TEXTURE_BINDING_2D,\n GL.TEXTURE_BINDING_2D_ARRAY,\n GL.TEXTURE_BINDING_3D,\n GL.TEXTURE_BINDING_CUBE_MAP\n]);\n"],"file":"webgl-parameter-tables.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/context/parameters/webgl-parameter-tables.ts"],"names":["GL_PARAMETER_DEFAULTS","GL","BLEND","BLEND_COLOR","Float32Array","BLEND_EQUATION_RGB","FUNC_ADD","BLEND_EQUATION_ALPHA","BLEND_SRC_RGB","ONE","BLEND_DST_RGB","ZERO","BLEND_SRC_ALPHA","BLEND_DST_ALPHA","COLOR_CLEAR_VALUE","COLOR_WRITEMASK","CULL_FACE","CULL_FACE_MODE","BACK","DEPTH_TEST","DEPTH_CLEAR_VALUE","DEPTH_FUNC","LESS","DEPTH_RANGE","DEPTH_WRITEMASK","DITHER","CURRENT_PROGRAM","FRAMEBUFFER_BINDING","RENDERBUFFER_BINDING","VERTEX_ARRAY_BINDING","ARRAY_BUFFER_BINDING","FRONT_FACE","CCW","GENERATE_MIPMAP_HINT","DONT_CARE","LINE_WIDTH","POLYGON_OFFSET_FILL","POLYGON_OFFSET_FACTOR","POLYGON_OFFSET_UNITS","SAMPLE_ALPHA_TO_COVERAGE","SAMPLE_COVERAGE","SAMPLE_COVERAGE_VALUE","SAMPLE_COVERAGE_INVERT","SCISSOR_TEST","SCISSOR_BOX","Int32Array","STENCIL_TEST","STENCIL_CLEAR_VALUE","STENCIL_WRITEMASK","STENCIL_BACK_WRITEMASK","STENCIL_FUNC","ALWAYS","STENCIL_REF","STENCIL_VALUE_MASK","STENCIL_BACK_FUNC","STENCIL_BACK_REF","STENCIL_BACK_VALUE_MASK","STENCIL_FAIL","KEEP","STENCIL_PASS_DEPTH_FAIL","STENCIL_PASS_DEPTH_PASS","STENCIL_BACK_FAIL","STENCIL_BACK_PASS_DEPTH_FAIL","STENCIL_BACK_PASS_DEPTH_PASS","VIEWPORT","PACK_ALIGNMENT","UNPACK_ALIGNMENT","UNPACK_FLIP_Y_WEBGL","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_COLORSPACE_CONVERSION_WEBGL","BROWSER_DEFAULT_WEBGL","TRANSFORM_FEEDBACK_BINDING","COPY_READ_BUFFER_BINDING","COPY_WRITE_BUFFER_BINDING","PIXEL_PACK_BUFFER_BINDING","PIXEL_UNPACK_BUFFER_BINDING","FRAGMENT_SHADER_DERIVATIVE_HINT","READ_FRAMEBUFFER_BINDING","RASTERIZER_DISCARD","PACK_ROW_LENGTH","PACK_SKIP_PIXELS","PACK_SKIP_ROWS","UNPACK_ROW_LENGTH","UNPACK_IMAGE_HEIGHT","UNPACK_SKIP_PIXELS","UNPACK_SKIP_ROWS","UNPACK_SKIP_IMAGES","enable","gl","value","key","disable","hint","pixelStorei","bindFramebuffer","target","DRAW_FRAMEBUFFER","FRAMEBUFFER","READ_FRAMEBUFFER","bindBuffer","bindingMap","ARRAY_BUFFER","COPY_READ_BUFFER","COPY_WRITE_BUFFER","PIXEL_PACK_BUFFER","PIXEL_UNPACK_BUFFER","isArray","array","Array","ArrayBuffer","isView","DataView","GL_PARAMETER_SETTERS","blendColor","clearColor","colorMask","cullFace","clearDepth","depthFunc","depthRange","depthMask","useProgram","bindRenderbuffer","RENDERBUFFER","bindTransformFeedback","TRANSFORM_FEEDBACK","bindVertexArray","frontFace","lineWidth","scissor","clearStencil","stencilMaskSeparate","FRONT","viewport","framebuffer","handle","args","separateModes","blendEquationSeparate","separateFuncs","length","blendFuncSeparate","polygonOffset","sampleCoverage","mask","backMask","func","ref","backFunc","backRef","stencilFuncSeparate","sfail","dpfail","dppass","backSfail","backDpfail","backDppass","stencilOpSeparate","getValue","glEnum","values","cache","undefined","GL_COMPOSITE_PARAMETER_SETTERS","blendEquation","blendFunc","stencilFuncFront","stencilFuncBack","stencilOpFront","stencilOpBack","GL_HOOKED_SETTERS","update","capability","pname","DRAW_FRAMEBUFFER_BINDING","buffer","valueChanged","r","g","b","a","mode","modeRGB","modeAlpha","src","dst","srcRGB","dstRGB","srcAlpha","dstAlpha","depth","s","zNear","zFar","face","width","factor","units","invert","x","y","height","stencilMask","stencilFunc","stencilOp","fail","zfail","zpass","isEnabled","GL_PARAMETER_GETTERS","NON_CACHE_PARAMETERS","Set","ACTIVE_TEXTURE","TRANSFORM_FEEDBACK_ACTIVE","TRANSFORM_FEEDBACK_PAUSED","TRANSFORM_FEEDBACK_BUFFER_BINDING","UNIFORM_BUFFER_BINDING","ELEMENT_ARRAY_BUFFER_BINDING","IMPLEMENTATION_COLOR_READ_FORMAT","IMPLEMENTATION_COLOR_READ_TYPE","READ_BUFFER","DRAW_BUFFER0","DRAW_BUFFER1","DRAW_BUFFER2","DRAW_BUFFER3","DRAW_BUFFER4","DRAW_BUFFER5","DRAW_BUFFER6","DRAW_BUFFER7","DRAW_BUFFER8","DRAW_BUFFER9","DRAW_BUFFER10","DRAW_BUFFER11","DRAW_BUFFER12","DRAW_BUFFER13","DRAW_BUFFER14","DRAW_BUFFER15","SAMPLER_BINDING","TEXTURE_BINDING_2D","TEXTURE_BINDING_2D_ARRAY","TEXTURE_BINDING_3D","TEXTURE_BINDING_CUBE_MAP"],"mappings":"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","sourcesContent":["// Tables describing WebGL parameters\nimport GL from '@luma.gl/constants';\nimport {isWebGL2} from '../context/webgl-checks';\nimport type {GLParameters} from '../../types/webgl';\n// DEFAULT SETTINGS - FOR FAST CACHE INITIALIZATION AND CONTEXT RESETS\n\n/* eslint-disable no-shadow */\n\nexport const GL_PARAMETER_DEFAULTS: GLParameters = {\n [GL.BLEND]: false,\n [GL.BLEND_COLOR]: new Float32Array([0, 0, 0, 0]),\n [GL.BLEND_EQUATION_RGB]: GL.FUNC_ADD,\n [GL.BLEND_EQUATION_ALPHA]: GL.FUNC_ADD,\n [GL.BLEND_SRC_RGB]: GL.ONE,\n [GL.BLEND_DST_RGB]: GL.ZERO,\n [GL.BLEND_SRC_ALPHA]: GL.ONE,\n [GL.BLEND_DST_ALPHA]: GL.ZERO,\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([0, 0, 0, 0]), // TBD\n [GL.COLOR_WRITEMASK]: [true, true, true, true],\n [GL.CULL_FACE]: false,\n [GL.CULL_FACE_MODE]: GL.BACK,\n [GL.DEPTH_TEST]: false,\n [GL.DEPTH_CLEAR_VALUE]: 1,\n [GL.DEPTH_FUNC]: GL.LESS,\n [GL.DEPTH_RANGE]: new Float32Array([0, 1]), // TBD\n [GL.DEPTH_WRITEMASK]: true,\n [GL.DITHER]: true,\n [GL.CURRENT_PROGRAM]: null,\n // FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: null,\n [GL.RENDERBUFFER_BINDING]: null,\n [GL.VERTEX_ARRAY_BINDING]: null,\n [GL.ARRAY_BUFFER_BINDING]: null,\n [GL.FRONT_FACE]: GL.CCW,\n [GL.GENERATE_MIPMAP_HINT]: GL.DONT_CARE,\n [GL.LINE_WIDTH]: 1,\n [GL.POLYGON_OFFSET_FILL]: false,\n [GL.POLYGON_OFFSET_FACTOR]: 0,\n [GL.POLYGON_OFFSET_UNITS]: 0,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE]: false,\n [GL.SAMPLE_COVERAGE_VALUE]: 1.0,\n [GL.SAMPLE_COVERAGE_INVERT]: false,\n [GL.SCISSOR_TEST]: false,\n // Note: Dynamic value. If scissor test enabled we expect users to set correct scissor box\n [GL.SCISSOR_BOX]: new Int32Array([0, 0, 1024, 1024]),\n [GL.STENCIL_TEST]: false,\n [GL.STENCIL_CLEAR_VALUE]: 0,\n [GL.STENCIL_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_BACK_WRITEMASK]: 0xffffffff,\n [GL.STENCIL_FUNC]: GL.ALWAYS,\n [GL.STENCIL_REF]: 0,\n [GL.STENCIL_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_BACK_FUNC]: GL.ALWAYS,\n [GL.STENCIL_BACK_REF]: 0,\n [GL.STENCIL_BACK_VALUE_MASK]: 0xffffffff,\n [GL.STENCIL_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_PASS_DEPTH_PASS]: GL.KEEP,\n [GL.STENCIL_BACK_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: GL.KEEP,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: GL.KEEP,\n // Dynamic value: We use [0, 0, 1024, 1024] as default, but usually this is updated in each frame.\n [GL.VIEWPORT]: [0, 0, 1024, 1024],\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: 4,\n [GL.UNPACK_ALIGNMENT]: 4,\n [GL.UNPACK_FLIP_Y_WEBGL]: false,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: false,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: GL.BROWSER_DEFAULT_WEBGL,\n\n // WEBGL2 / EXTENSIONS\n // gl1: 'OES_standard_derivatives'\n [GL.TRANSFORM_FEEDBACK_BINDING]: null,\n [GL.COPY_READ_BUFFER_BINDING]: null,\n [GL.COPY_WRITE_BUFFER_BINDING]: null,\n [GL.PIXEL_PACK_BUFFER_BINDING]: null,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: null,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: GL.DONT_CARE,\n [GL.READ_FRAMEBUFFER_BINDING]: null,\n [GL.RASTERIZER_DISCARD]: false,\n [GL.PACK_ROW_LENGTH]: 0,\n [GL.PACK_SKIP_PIXELS]: 0,\n [GL.PACK_SKIP_ROWS]: 0,\n [GL.UNPACK_ROW_LENGTH]: 0,\n [GL.UNPACK_IMAGE_HEIGHT]: 0,\n [GL.UNPACK_SKIP_PIXELS]: 0,\n [GL.UNPACK_SKIP_ROWS]: 0,\n [GL.UNPACK_SKIP_IMAGES]: 0\n};\n\n// SETTER TABLES - ENABLES SETTING ANY PARAMETER WITH A COMMON API\n\nconst enable = (gl: WebGLRenderingContext, value: unknown, key: GL) =>\n value ? gl.enable(key) : gl.disable(key);\nconst hint = (gl: WebGLRenderingContext, value: GL, key: GL) => gl.hint(key, value);\nconst pixelStorei = (gl: WebGLRenderingContext, value: number | boolean, key: GL) =>\n gl.pixelStorei(key, value);\n\nconst bindFramebuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {\n let target;\n if (key === GL.FRAMEBUFFER_BINDING) {\n target = isWebGL2(gl) ? GL.DRAW_FRAMEBUFFER : GL.FRAMEBUFFER;\n } else {\n // GL.READ_FRAMEBUFFER_BINDING\n target = GL.READ_FRAMEBUFFER;\n }\n return gl.bindFramebuffer(target, value);\n};\n\nconst bindBuffer = (gl: WebGLRenderingContext, value: unknown, key: GL) => {\n const bindingMap: Partial<Record<GL, GL>> = {\n [GL.ARRAY_BUFFER_BINDING]: GL.ARRAY_BUFFER,\n [GL.COPY_READ_BUFFER_BINDING]: GL.COPY_READ_BUFFER,\n [GL.COPY_WRITE_BUFFER_BINDING]: GL.COPY_WRITE_BUFFER,\n [GL.PIXEL_PACK_BUFFER_BINDING]: GL.PIXEL_PACK_BUFFER,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: GL.PIXEL_UNPACK_BUFFER\n };\n const target = bindingMap[key];\n\n gl.bindBuffer(target, value);\n};\n\n// Utility\nfunction isArray(array: unknown): boolean {\n return Array.isArray(array) || (ArrayBuffer.isView(array) && !(array instanceof DataView));\n}\n\n// Map from WebGL parameter names to corresponding WebGL setter functions\n// WegGL constants are read by parameter names, but set by function names\n// NOTE: When value type is a string, it will be handled by 'GL_COMPOSITE_PARAMETER_SETTERS'\nexport const GL_PARAMETER_SETTERS = {\n [GL.BLEND]: enable,\n [GL.BLEND_COLOR]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>\n gl.blendColor(...value),\n [GL.BLEND_EQUATION_RGB]: 'blendEquation',\n [GL.BLEND_EQUATION_ALPHA]: 'blendEquation',\n [GL.BLEND_SRC_RGB]: 'blendFunc',\n [GL.BLEND_DST_RGB]: 'blendFunc',\n [GL.BLEND_SRC_ALPHA]: 'blendFunc',\n [GL.BLEND_DST_ALPHA]: 'blendFunc',\n [GL.COLOR_CLEAR_VALUE]: (gl: WebGLRenderingContext, value: [number, number, number, number]) =>\n gl.clearColor(...value),\n [GL.COLOR_WRITEMASK]: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),\n [GL.CULL_FACE]: enable,\n [GL.CULL_FACE_MODE]: (gl: WebGLRenderingContext, value) => gl.cullFace(value),\n [GL.DEPTH_TEST]: enable,\n [GL.DEPTH_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),\n [GL.DEPTH_FUNC]: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),\n [GL.DEPTH_RANGE]: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),\n [GL.DEPTH_WRITEMASK]: (gl: WebGLRenderingContext, value) => gl.depthMask(value),\n [GL.DITHER]: enable,\n [GL.FRAGMENT_SHADER_DERIVATIVE_HINT]: hint,\n\n [GL.CURRENT_PROGRAM]: (gl: WebGLRenderingContext, value) => gl.useProgram(value),\n [GL.RENDERBUFFER_BINDING]: (gl: WebGLRenderingContext, value) =>\n gl.bindRenderbuffer(GL.RENDERBUFFER, value),\n [GL.TRANSFORM_FEEDBACK_BINDING]: (gl: WebGLRenderingContext, value) =>\n (gl as WebGL2RenderingContext).bindTransformFeedback?.(GL.TRANSFORM_FEEDBACK, value),\n [GL.VERTEX_ARRAY_BINDING]: (gl: WebGLRenderingContext, value) =>\n (gl as WebGL2RenderingContext).bindVertexArray(value),\n // NOTE: FRAMEBUFFER_BINDING and DRAW_FRAMEBUFFER_BINDING(WebGL2) refer same state.\n [GL.FRAMEBUFFER_BINDING]: bindFramebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: bindFramebuffer,\n\n // Buffers\n [GL.ARRAY_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_READ_BUFFER_BINDING]: bindBuffer,\n [GL.COPY_WRITE_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_PACK_BUFFER_BINDING]: bindBuffer,\n [GL.PIXEL_UNPACK_BUFFER_BINDING]: bindBuffer,\n\n [GL.FRONT_FACE]: (gl: WebGLRenderingContext, value) => gl.frontFace(value),\n [GL.GENERATE_MIPMAP_HINT]: hint,\n [GL.LINE_WIDTH]: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),\n [GL.POLYGON_OFFSET_FILL]: enable,\n [GL.POLYGON_OFFSET_FACTOR]: 'polygonOffset',\n [GL.POLYGON_OFFSET_UNITS]: 'polygonOffset',\n [GL.RASTERIZER_DISCARD]: enable,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE]: enable,\n [GL.SAMPLE_COVERAGE_VALUE]: 'sampleCoverage',\n [GL.SAMPLE_COVERAGE_INVERT]: 'sampleCoverage',\n [GL.SCISSOR_TEST]: enable,\n [GL.SCISSOR_BOX]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),\n [GL.STENCIL_TEST]: enable,\n [GL.STENCIL_CLEAR_VALUE]: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),\n [GL.STENCIL_WRITEMASK]: (gl: WebGLRenderingContext, value) =>\n gl.stencilMaskSeparate(GL.FRONT, value),\n [GL.STENCIL_BACK_WRITEMASK]: (gl: WebGLRenderingContext, value) =>\n gl.stencilMaskSeparate(GL.BACK, value),\n [GL.STENCIL_FUNC]: 'stencilFuncFront',\n [GL.STENCIL_REF]: 'stencilFuncFront',\n [GL.STENCIL_VALUE_MASK]: 'stencilFuncFront',\n [GL.STENCIL_BACK_FUNC]: 'stencilFuncBack',\n [GL.STENCIL_BACK_REF]: 'stencilFuncBack',\n [GL.STENCIL_BACK_VALUE_MASK]: 'stencilFuncBack',\n [GL.STENCIL_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_FAIL]: 'stencilOpFront',\n [GL.STENCIL_PASS_DEPTH_PASS]: 'stencilOpFront',\n [GL.STENCIL_BACK_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: 'stencilOpBack',\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: 'stencilOpBack',\n [GL.VIEWPORT]: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value),\n\n // WEBGL1 PIXEL PACK/UNPACK MODES\n [GL.PACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_ALIGNMENT]: pixelStorei,\n [GL.UNPACK_FLIP_Y_WEBGL]: pixelStorei,\n [GL.UNPACK_PREMULTIPLY_ALPHA_WEBGL]: pixelStorei,\n [GL.UNPACK_COLORSPACE_CONVERSION_WEBGL]: pixelStorei,\n\n // WEBGL2 PIXEL PACK/UNPACK MODES\n // RASTERIZER_DISCARD ...\n [GL.PACK_ROW_LENGTH]: pixelStorei,\n [GL.PACK_SKIP_PIXELS]: pixelStorei,\n [GL.PACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_ROW_LENGTH]: pixelStorei,\n [GL.UNPACK_IMAGE_HEIGHT]: pixelStorei,\n [GL.UNPACK_SKIP_PIXELS]: pixelStorei,\n [GL.UNPACK_SKIP_ROWS]: pixelStorei,\n [GL.UNPACK_SKIP_IMAGES]: pixelStorei,\n\n // Function-style setters\n framebuffer: (gl: WebGLRenderingContext, framebuffer) => {\n // accepts 1) a WebGLFramebuffer 2) null (default framebuffer), or 3) luma.gl Framebuffer class\n // framebuffer is null when restoring to default framebuffer, otherwise use the WebGL handle.\n const handle = framebuffer && 'handle' in framebuffer ? framebuffer.handle : framebuffer;\n return gl.bindFramebuffer(GL.FRAMEBUFFER, handle);\n },\n blend: (gl: WebGLRenderingContext, value) => (value ? gl.enable(GL.BLEND) : gl.disable(GL.BLEND)),\n blendColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.blendColor(...value),\n blendEquation: (gl: WebGLRenderingContext, args: number | [number, number]) => {\n const separateModes = typeof args === 'number' ? [args, args] as [number, number]: args;\n gl.blendEquationSeparate(...separateModes);\n },\n blendFunc: (gl: WebGLRenderingContext, args: [number, number] | [number, number, number, number]) => {\n const separateFuncs = args?.length === 2 ? [...args, ...args] as [number, number, number, number] : args;\n gl.blendFuncSeparate(...separateFuncs);\n },\n\n clearColor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.clearColor(...value),\n clearDepth: (gl: WebGLRenderingContext, value) => gl.clearDepth(value),\n clearStencil: (gl: WebGLRenderingContext, value) => gl.clearStencil(value),\n\n colorMask: (gl: WebGLRenderingContext, value: [boolean, boolean, boolean, boolean]) => gl.colorMask(...value),\n\n cull: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.CULL_FACE) : gl.disable(GL.CULL_FACE),\n cullFace: (gl: WebGLRenderingContext, value) => gl.cullFace(value),\n\n depthTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST),\n depthFunc: (gl: WebGLRenderingContext, value) => gl.depthFunc(value),\n depthMask: (gl: WebGLRenderingContext, value) => gl.depthMask(value),\n depthRange: (gl: WebGLRenderingContext, value: [number, number]) => gl.depthRange(...value),\n\n dither: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.DITHER) : gl.disable(GL.DITHER),\n\n derivativeHint: (gl: WebGLRenderingContext, value) => {\n // gl1: 'OES_standard_derivatives'\n gl.hint(GL.FRAGMENT_SHADER_DERIVATIVE_HINT, value);\n },\n\n frontFace: (gl: WebGLRenderingContext, value) => gl.frontFace(value),\n\n mipmapHint: (gl: WebGLRenderingContext, value) => gl.hint(GL.GENERATE_MIPMAP_HINT, value),\n\n lineWidth: (gl: WebGLRenderingContext, value) => gl.lineWidth(value),\n\n polygonOffsetFill: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.POLYGON_OFFSET_FILL) : gl.disable(GL.POLYGON_OFFSET_FILL),\n polygonOffset: (gl: WebGLRenderingContext, value: [number, number]) => gl.polygonOffset(...value),\n\n sampleCoverage: (gl: WebGLRenderingContext, value: [number, boolean?]) => gl.sampleCoverage(...value),\n\n scissorTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.SCISSOR_TEST) : gl.disable(GL.SCISSOR_TEST),\n scissor: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.scissor(...value),\n\n stencilTest: (gl: WebGLRenderingContext, value) =>\n value ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST),\n stencilMask: (gl: WebGLRenderingContext, value) => {\n value = isArray(value) ? value : [value, value];\n const [mask, backMask] = value;\n gl.stencilMaskSeparate(GL.FRONT, mask);\n gl.stencilMaskSeparate(GL.BACK, backMask);\n },\n stencilFunc: (gl: WebGLRenderingContext, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [func, ref, mask, backFunc, backRef, backMask] = args;\n gl.stencilFuncSeparate(GL.FRONT, func, ref, mask);\n gl.stencilFuncSeparate(GL.BACK, backFunc, backRef, backMask);\n },\n stencilOp: (gl: WebGLRenderingContext, args) => {\n args = isArray(args) && args.length === 3 ? [...args, ...args] : args;\n const [sfail, dpfail, dppass, backSfail, backDpfail, backDppass] = args;\n gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);\n gl.stencilOpSeparate(GL.BACK, backSfail, backDpfail, backDppass);\n },\n\n viewport: (gl: WebGLRenderingContext, value: [number, number, number, number]) => gl.viewport(...value)\n};\n\nfunction getValue(glEnum, values, cache) {\n return values[glEnum] !== undefined ? values[glEnum] : cache[glEnum];\n}\n\n// COMPOSITE_WEBGL_PARAMETER_\nexport const GL_COMPOSITE_PARAMETER_SETTERS = {\n blendEquation: (gl: WebGLRenderingContext, values, cache) =>\n gl.blendEquationSeparate(\n getValue(GL.BLEND_EQUATION_RGB, values, cache),\n getValue(GL.BLEND_EQUATION_ALPHA, values, cache)\n ),\n blendFunc: (gl: WebGLRenderingContext, values, cache) =>\n gl.blendFuncSeparate(\n getValue(GL.BLEND_SRC_RGB, values, cache),\n getValue(GL.BLEND_DST_RGB, values, cache),\n getValue(GL.BLEND_SRC_ALPHA, values, cache),\n getValue(GL.BLEND_DST_ALPHA, values, cache)\n ),\n polygonOffset: (gl: WebGLRenderingContext, values, cache) =>\n gl.polygonOffset(\n getValue(GL.POLYGON_OFFSET_FACTOR, values, cache),\n getValue(GL.POLYGON_OFFSET_UNITS, values, cache)\n ),\n sampleCoverage: (gl: WebGLRenderingContext, values, cache) =>\n gl.sampleCoverage(\n getValue(GL.SAMPLE_COVERAGE_VALUE, values, cache),\n getValue(GL.SAMPLE_COVERAGE_INVERT, values, cache)\n ),\n stencilFuncFront: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilFuncSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FUNC, values, cache),\n getValue(GL.STENCIL_REF, values, cache),\n getValue(GL.STENCIL_VALUE_MASK, values, cache)\n ),\n stencilFuncBack: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilFuncSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FUNC, values, cache),\n getValue(GL.STENCIL_BACK_REF, values, cache),\n getValue(GL.STENCIL_BACK_VALUE_MASK, values, cache)\n ),\n stencilOpFront: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilOpSeparate(\n GL.FRONT,\n getValue(GL.STENCIL_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_PASS_DEPTH_PASS, values, cache)\n ),\n stencilOpBack: (gl: WebGLRenderingContext, values, cache) =>\n gl.stencilOpSeparate(\n GL.BACK,\n getValue(GL.STENCIL_BACK_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_FAIL, values, cache),\n getValue(GL.STENCIL_BACK_PASS_DEPTH_PASS, values, cache)\n )\n};\n\ntype UpdateFunc = (params: Record<string, any>) => void;\n\n// Setter functions intercepted for cache updates\nexport const GL_HOOKED_SETTERS = {\n // GENERIC SETTERS\n\n enable: (update: UpdateFunc, capability: GL) =>\n update({\n [capability]: true\n }),\n disable: (update: UpdateFunc, capability: GL) =>\n update({\n [capability]: false\n }),\n pixelStorei: (update: UpdateFunc, pname: GL, value) =>\n update({\n [pname]: value\n }),\n hint: (update: UpdateFunc, pname: GL, hint: GL) =>\n update({\n [pname]: hint\n }),\n\n // SPECIFIC SETTERS\n useProgram: (update: UpdateFunc, value) =>\n update({\n [GL.CURRENT_PROGRAM]: value\n }),\n bindRenderbuffer: (update: UpdateFunc, target, value) =>\n update({\n [GL.RENDERBUFFER_BINDING]: value\n }),\n bindTransformFeedback: (update: UpdateFunc, target, value) =>\n update({\n [GL.TRANSFORM_FEEDBACK_BINDING]: value\n }),\n bindVertexArray: (update: UpdateFunc, value) =>\n update({\n [GL.VERTEX_ARRAY_BINDING]: value\n }),\n\n bindFramebuffer: (update: UpdateFunc, target, framebuffer) => {\n switch (target) {\n case GL.FRAMEBUFFER:\n return update({\n [GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer,\n [GL.READ_FRAMEBUFFER_BINDING]: framebuffer\n });\n case GL.DRAW_FRAMEBUFFER:\n return update({[GL.DRAW_FRAMEBUFFER_BINDING]: framebuffer});\n case GL.READ_FRAMEBUFFER:\n return update({[GL.READ_FRAMEBUFFER_BINDING]: framebuffer});\n default:\n return null;\n }\n },\n bindBuffer: (update: UpdateFunc, target, buffer) => {\n const pname = {\n [GL.ARRAY_BUFFER]: [GL.ARRAY_BUFFER_BINDING],\n [GL.COPY_READ_BUFFER]: [GL.COPY_READ_BUFFER_BINDING],\n [GL.COPY_WRITE_BUFFER]: [GL.COPY_WRITE_BUFFER_BINDING],\n [GL.PIXEL_PACK_BUFFER]: [GL.PIXEL_PACK_BUFFER_BINDING],\n [GL.PIXEL_UNPACK_BUFFER]: [GL.PIXEL_UNPACK_BUFFER_BINDING]\n }[target];\n\n if (pname) {\n return update({[pname]: buffer});\n }\n // targets that should not be cached\n return {valueChanged: true};\n },\n\n blendColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.BLEND_COLOR]: new Float32Array([r, g, b, a])\n }),\n\n blendEquation: (update: UpdateFunc, mode) =>\n update({\n [GL.BLEND_EQUATION_RGB]: mode,\n [GL.BLEND_EQUATION_ALPHA]: mode\n }),\n\n blendEquationSeparate: (update: UpdateFunc, modeRGB, modeAlpha) =>\n update({\n [GL.BLEND_EQUATION_RGB]: modeRGB,\n [GL.BLEND_EQUATION_ALPHA]: modeAlpha\n }),\n\n blendFunc: (update: UpdateFunc, src, dst) =>\n update({\n [GL.BLEND_SRC_RGB]: src,\n [GL.BLEND_DST_RGB]: dst,\n [GL.BLEND_SRC_ALPHA]: src,\n [GL.BLEND_DST_ALPHA]: dst\n }),\n\n blendFuncSeparate: (update: UpdateFunc, srcRGB, dstRGB, srcAlpha, dstAlpha) =>\n update({\n [GL.BLEND_SRC_RGB]: srcRGB,\n [GL.BLEND_DST_RGB]: dstRGB,\n [GL.BLEND_SRC_ALPHA]: srcAlpha,\n [GL.BLEND_DST_ALPHA]: dstAlpha\n }),\n\n clearColor: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_CLEAR_VALUE]: new Float32Array([r, g, b, a])\n }),\n\n clearDepth: (update: UpdateFunc, depth: number) =>\n update({\n [GL.DEPTH_CLEAR_VALUE]: depth\n }),\n\n clearStencil: (update: UpdateFunc, s: number) =>\n update({\n [GL.STENCIL_CLEAR_VALUE]: s\n }),\n\n colorMask: (update: UpdateFunc, r: number, g: number, b: number, a: number) =>\n update({\n [GL.COLOR_WRITEMASK]: [r, g, b, a]\n }),\n\n cullFace: (update: UpdateFunc, mode) =>\n update({\n [GL.CULL_FACE_MODE]: mode\n }),\n\n depthFunc: (update: UpdateFunc, func) =>\n update({\n [GL.DEPTH_FUNC]: func\n }),\n\n depthRange: (update: UpdateFunc, zNear: number, zFar: number) =>\n update({\n [GL.DEPTH_RANGE]: new Float32Array([zNear, zFar])\n }),\n\n depthMask: (update: UpdateFunc, mask: number) =>\n update({\n [GL.DEPTH_WRITEMASK]: mask\n }),\n\n frontFace: (update: UpdateFunc, face) =>\n update({\n [GL.FRONT_FACE]: face\n }),\n\n lineWidth: (update: UpdateFunc, width) =>\n update({\n [GL.LINE_WIDTH]: width\n }),\n\n polygonOffset: (update: UpdateFunc, factor, units) =>\n update({\n [GL.POLYGON_OFFSET_FACTOR]: factor,\n [GL.POLYGON_OFFSET_UNITS]: units\n }),\n\n sampleCoverage: (update: UpdateFunc, value, invert) =>\n update({\n [GL.SAMPLE_COVERAGE_VALUE]: value,\n [GL.SAMPLE_COVERAGE_INVERT]: invert\n }),\n\n scissor: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.SCISSOR_BOX]: new Int32Array([x, y, width, height])\n }),\n\n stencilMask: (update: UpdateFunc, mask) =>\n update({\n [GL.STENCIL_WRITEMASK]: mask,\n [GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilMaskSeparate: (update: UpdateFunc, face, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_WRITEMASK : GL.STENCIL_BACK_WRITEMASK]: mask\n }),\n\n stencilFunc: (update: UpdateFunc, func, ref, mask) =>\n update({\n [GL.STENCIL_FUNC]: func,\n [GL.STENCIL_REF]: ref,\n [GL.STENCIL_VALUE_MASK]: mask,\n [GL.STENCIL_BACK_FUNC]: func,\n [GL.STENCIL_BACK_REF]: ref,\n [GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilFuncSeparate: (update: UpdateFunc, face, func, ref, mask) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FUNC : GL.STENCIL_BACK_FUNC]: func,\n [face === GL.FRONT ? GL.STENCIL_REF : GL.STENCIL_BACK_REF]: ref,\n [face === GL.FRONT ? GL.STENCIL_VALUE_MASK : GL.STENCIL_BACK_VALUE_MASK]: mask\n }),\n\n stencilOp: (update: UpdateFunc, fail, zfail, zpass) =>\n update({\n [GL.STENCIL_FAIL]: fail,\n [GL.STENCIL_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_PASS_DEPTH_PASS]: zpass,\n [GL.STENCIL_BACK_FAIL]: fail,\n [GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n stencilOpSeparate: (update: UpdateFunc, face, fail, zfail, zpass) =>\n update({\n [face === GL.FRONT ? GL.STENCIL_FAIL : GL.STENCIL_BACK_FAIL]: fail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_FAIL : GL.STENCIL_BACK_PASS_DEPTH_FAIL]: zfail,\n [face === GL.FRONT ? GL.STENCIL_PASS_DEPTH_PASS : GL.STENCIL_BACK_PASS_DEPTH_PASS]: zpass\n }),\n\n viewport: (update: UpdateFunc, x, y, width, height) =>\n update({\n [GL.VIEWPORT]: [x, y, width, height]\n })\n};\n\n// GETTER TABLE - FOR READING OUT AN ENTIRE CONTEXT\n\nconst isEnabled = (gl: WebGLRenderingContext, key) => gl.isEnabled(key);\n\n// Exceptions for any keys that cannot be queried by gl.getParameters\nexport const GL_PARAMETER_GETTERS = {\n [GL.BLEND]: isEnabled,\n [GL.CULL_FACE]: isEnabled,\n [GL.DEPTH_TEST]: isEnabled,\n [GL.DITHER]: isEnabled,\n [GL.POLYGON_OFFSET_FILL]: isEnabled,\n [GL.SAMPLE_ALPHA_TO_COVERAGE]: isEnabled,\n [GL.SAMPLE_COVERAGE]: isEnabled,\n [GL.SCISSOR_TEST]: isEnabled,\n [GL.STENCIL_TEST]: isEnabled,\n\n // WebGL 2\n [GL.RASTERIZER_DISCARD]: isEnabled\n};\n\nexport const NON_CACHE_PARAMETERS = new Set([\n // setter not intercepted\n GL.ACTIVE_TEXTURE,\n GL.TRANSFORM_FEEDBACK_ACTIVE,\n GL.TRANSFORM_FEEDBACK_PAUSED,\n\n // setters bindBufferRange/bindBufferBase cannot be pruned based on cache\n GL.TRANSFORM_FEEDBACK_BUFFER_BINDING,\n GL.UNIFORM_BUFFER_BINDING,\n\n // states depending on VERTEX_ARRAY_BINDING\n GL.ELEMENT_ARRAY_BUFFER_BINDING,\n // states depending on READ_FRAMEBUFFER_BINDING\n GL.IMPLEMENTATION_COLOR_READ_FORMAT,\n GL.IMPLEMENTATION_COLOR_READ_TYPE,\n // states depending on FRAMEBUFFER_BINDING\n GL.READ_BUFFER,\n GL.DRAW_BUFFER0,\n GL.DRAW_BUFFER1,\n GL.DRAW_BUFFER2,\n GL.DRAW_BUFFER3,\n GL.DRAW_BUFFER4,\n GL.DRAW_BUFFER5,\n GL.DRAW_BUFFER6,\n GL.DRAW_BUFFER7,\n GL.DRAW_BUFFER8,\n GL.DRAW_BUFFER9,\n GL.DRAW_BUFFER10,\n GL.DRAW_BUFFER11,\n GL.DRAW_BUFFER12,\n GL.DRAW_BUFFER13,\n GL.DRAW_BUFFER14,\n GL.DRAW_BUFFER15,\n // states depending on ACTIVE_TEXTURE\n GL.SAMPLER_BINDING,\n GL.TEXTURE_BINDING_2D,\n GL.TEXTURE_BINDING_2D_ARRAY,\n GL.TEXTURE_BINDING_3D,\n GL.TEXTURE_BINDING_CUBE_MAP\n]);\n"],"file":"webgl-parameter-tables.js"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getContextData = getContextData;
|
|
7
|
+
|
|
8
|
+
function getContextData(gl) {
|
|
9
|
+
var luma = gl.luma;
|
|
10
|
+
|
|
11
|
+
if (!luma) {
|
|
12
|
+
var contextState = {
|
|
13
|
+
_polyfilled: false,
|
|
14
|
+
_extensions: {}
|
|
15
|
+
};
|
|
16
|
+
gl.luma = contextState;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return gl.luma;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=context-data.js.map
|