@luma.gl/webgl 8.5.13 → 8.5.16
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/dist.js +763 -860
- package/dist/dist.min.js +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/classes/accessor.js +31 -33
- package/dist/es5/classes/accessor.js.map +1 -1
- package/dist/es5/classes/buffer.js +24 -26
- package/dist/es5/classes/buffer.js.map +1 -1
- package/dist/es5/classes/clear.js.map +1 -1
- package/dist/es5/classes/copy-and-blit.js +3 -3
- package/dist/es5/classes/copy-and-blit.js.map +1 -1
- package/dist/es5/classes/framebuffer.js +70 -72
- package/dist/es5/classes/framebuffer.js.map +1 -1
- package/dist/es5/classes/program-configuration.js.map +1 -1
- package/dist/es5/classes/program.js +11 -13
- package/dist/es5/classes/program.js.map +1 -1
- package/dist/es5/classes/query.js +47 -49
- package/dist/es5/classes/query.js.map +1 -1
- package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
- package/dist/es5/classes/renderbuffer.js +37 -39
- package/dist/es5/classes/renderbuffer.js.map +1 -1
- package/dist/es5/classes/resource.js +36 -17
- package/dist/es5/classes/resource.js.map +1 -1
- package/dist/es5/classes/shader.js +38 -44
- package/dist/es5/classes/shader.js.map +1 -1
- package/dist/es5/classes/texture-2d.js +16 -17
- package/dist/es5/classes/texture-2d.js.map +1 -1
- package/dist/es5/classes/texture-3d.js +15 -17
- package/dist/es5/classes/texture-3d.js.map +1 -1
- package/dist/es5/classes/texture-cube.js +10 -12
- package/dist/es5/classes/texture-cube.js.map +1 -1
- package/dist/es5/classes/texture-formats.js +1 -1
- package/dist/es5/classes/texture-formats.js.map +1 -1
- package/dist/es5/classes/texture.js +24 -26
- package/dist/es5/classes/texture.js.map +1 -1
- package/dist/es5/classes/transform-feedback.js +16 -22
- package/dist/es5/classes/transform-feedback.js.map +1 -1
- package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/es5/classes/uniforms.js +2 -2
- package/dist/es5/classes/uniforms.js.map +1 -1
- package/dist/es5/classes/vertex-array-object.js +69 -71
- package/dist/es5/classes/vertex-array-object.js.map +1 -1
- package/dist/es5/classes/vertex-array.js.map +1 -1
- package/dist/es5/debug/debug-program-configuration.js +1 -1
- package/dist/es5/debug/debug-program-configuration.js.map +1 -1
- package/dist/es5/debug/debug-uniforms.js +1 -1
- package/dist/es5/debug/debug-uniforms.js.map +1 -1
- package/dist/es5/debug/debug-vertex-array.js.map +1 -1
- package/dist/es5/features/check-glsl-extension.js.map +1 -1
- package/dist/es5/features/check-old-ie.js.map +1 -1
- package/dist/es5/features/features.js +2 -2
- package/dist/es5/features/features.js.map +1 -1
- package/dist/es5/features/index.js +16 -16
- package/dist/es5/features/index.js.map +1 -1
- package/dist/es5/features/limits.js +1 -1
- package/dist/es5/features/limits.js.map +1 -1
- package/dist/es5/features/webgl-features-table.js.map +1 -1
- package/dist/es5/features/webgl-limits-table.js.map +1 -1
- package/dist/es5/glsl-utils/format-glsl-error.js.map +1 -1
- package/dist/es5/glsl-utils/get-shader-name.js.map +1 -1
- package/dist/es5/glsl-utils/get-shader-type-name.js.map +1 -1
- package/dist/es5/glsl-utils/get-shader-version.js.map +1 -1
- package/dist/es5/glsl-utils/index.js +11 -7
- package/dist/es5/glsl-utils/index.js.map +1 -1
- package/dist/es5/index.js +104 -104
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.d.ts +1 -1
- package/dist/es5/init.js +5 -4
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/utils/array-utils-flat.js +2 -2
- package/dist/es5/utils/array-utils-flat.js.map +1 -1
- package/dist/es5/utils/assert.js.map +1 -1
- package/dist/es5/utils/check-props.js.map +1 -1
- package/dist/es5/utils/format-value.js.map +1 -1
- package/dist/es5/utils/is-old-ie.js.map +1 -1
- package/dist/es5/utils/load-file.js +1 -1
- package/dist/es5/utils/load-file.js.map +1 -1
- package/dist/es5/utils/stub-methods.js.map +1 -1
- package/dist/es5/utils/utils.js +2 -2
- package/dist/es5/utils/utils.js.map +1 -1
- package/dist/es5/webgl-utils/attribute-utils.js +3 -3
- package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
- package/dist/es5/webgl-utils/constants-to-keys.js +1 -1
- package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/es5/webgl-utils/format-utils.js.map +1 -1
- package/dist/es5/webgl-utils/get-error.js +1 -1
- package/dist/es5/webgl-utils/get-error.js.map +1 -1
- package/dist/es5/webgl-utils/request-animation-frame.js +1 -1
- package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
- package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
- package/dist/es5/webgl-utils/typed-array-utils.js +1 -1
- package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/classes/accessor.js +12 -3
- package/dist/esm/classes/accessor.js.map +1 -1
- package/dist/esm/classes/buffer.js +41 -28
- package/dist/esm/classes/buffer.js.map +1 -1
- package/dist/esm/classes/clear.js +14 -12
- package/dist/esm/classes/clear.js.map +1 -1
- package/dist/esm/classes/copy-and-blit.js +27 -21
- package/dist/esm/classes/copy-and-blit.js.map +1 -1
- package/dist/esm/classes/framebuffer.js +89 -64
- package/dist/esm/classes/framebuffer.js.map +1 -1
- package/dist/esm/classes/program-configuration.js.map +1 -1
- package/dist/esm/classes/program.js +40 -32
- package/dist/esm/classes/program.js.map +1 -1
- package/dist/esm/classes/query.js +11 -6
- package/dist/esm/classes/query.js.map +1 -1
- package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
- package/dist/esm/classes/renderbuffer.js +25 -19
- package/dist/esm/classes/renderbuffer.js.map +1 -1
- package/dist/esm/classes/resource.js +49 -18
- package/dist/esm/classes/resource.js.map +1 -1
- package/dist/esm/classes/shader.js +13 -10
- package/dist/esm/classes/shader.js.map +1 -1
- package/dist/esm/classes/texture-2d.js +2 -1
- package/dist/esm/classes/texture-2d.js.map +1 -1
- package/dist/esm/classes/texture-3d.js +17 -14
- package/dist/esm/classes/texture-3d.js.map +1 -1
- package/dist/esm/classes/texture-cube.js +23 -19
- package/dist/esm/classes/texture-cube.js.map +1 -1
- package/dist/esm/classes/texture-formats.js.map +1 -1
- package/dist/esm/classes/texture.js +47 -35
- package/dist/esm/classes/texture.js.map +1 -1
- package/dist/esm/classes/transform-feedback.js +12 -6
- package/dist/esm/classes/transform-feedback.js.map +1 -1
- package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
- package/dist/esm/classes/uniforms.js +6 -6
- package/dist/esm/classes/uniforms.js.map +1 -1
- package/dist/esm/classes/vertex-array-object.js +17 -9
- package/dist/esm/classes/vertex-array-object.js.map +1 -1
- package/dist/esm/classes/vertex-array.js +17 -7
- package/dist/esm/classes/vertex-array.js.map +1 -1
- package/dist/esm/debug/debug-program-configuration.js +4 -4
- package/dist/esm/debug/debug-program-configuration.js.map +1 -1
- package/dist/esm/debug/debug-uniforms.js +16 -14
- package/dist/esm/debug/debug-uniforms.js.map +1 -1
- package/dist/esm/debug/debug-vertex-array.js +16 -14
- package/dist/esm/debug/debug-vertex-array.js.map +1 -1
- package/dist/esm/features/check-glsl-extension.js +3 -2
- package/dist/esm/features/check-glsl-extension.js.map +1 -1
- package/dist/esm/features/check-old-ie.js +2 -1
- package/dist/esm/features/check-old-ie.js.map +1 -1
- package/dist/esm/features/features.js +1 -1
- package/dist/esm/features/features.js.map +1 -1
- package/dist/esm/features/index.js.map +1 -1
- package/dist/esm/features/limits.js.map +1 -1
- package/dist/esm/features/webgl-features-table.js +1 -1
- package/dist/esm/features/webgl-features-table.js.map +1 -1
- package/dist/esm/features/webgl-limits-table.js.map +1 -1
- package/dist/esm/glsl-utils/format-glsl-error.js +9 -7
- package/dist/esm/glsl-utils/format-glsl-error.js.map +1 -1
- package/dist/esm/glsl-utils/get-shader-name.js +2 -1
- package/dist/esm/glsl-utils/get-shader-name.js.map +1 -1
- package/dist/esm/glsl-utils/get-shader-type-name.js.map +1 -1
- package/dist/esm/glsl-utils/get-shader-version.js.map +1 -1
- package/dist/esm/glsl-utils/index.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.d.ts +1 -1
- package/dist/esm/init.js +5 -7
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/utils/array-utils-flat.js +7 -6
- package/dist/esm/utils/array-utils-flat.js.map +1 -1
- package/dist/esm/utils/assert.js.map +1 -1
- package/dist/esm/utils/check-props.js +4 -4
- package/dist/esm/utils/check-props.js.map +1 -1
- package/dist/esm/utils/format-value.js +4 -3
- package/dist/esm/utils/format-value.js.map +1 -1
- package/dist/esm/utils/is-old-ie.js +2 -1
- package/dist/esm/utils/is-old-ie.js.map +1 -1
- package/dist/esm/utils/load-file.js +3 -2
- package/dist/esm/utils/load-file.js.map +1 -1
- package/dist/esm/utils/stub-methods.js +2 -3
- package/dist/esm/utils/stub-methods.js.map +1 -1
- package/dist/esm/utils/utils.js +3 -2
- package/dist/esm/utils/utils.js.map +1 -1
- package/dist/esm/webgl-utils/attribute-utils.js +11 -8
- package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
- package/dist/esm/webgl-utils/constants-to-keys.js +3 -3
- package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
- package/dist/esm/webgl-utils/format-utils.js.map +1 -1
- package/dist/esm/webgl-utils/get-error.js +1 -1
- package/dist/esm/webgl-utils/get-error.js.map +1 -1
- package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
- package/dist/esm/webgl-utils/texture-utils.js +1 -1
- package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
- package/dist/esm/webgl-utils/typed-array-utils.js +19 -15
- package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
- package/package.json +5 -5
- package/src/classes/framebuffer.js +1 -0
- package/src/classes/resource.js +21 -3
- package/src/classes/transform-feedback.js +1 -1
- package/src/classes/vertex-array-object.js +1 -1
- package/src/init.d.ts +1 -1
- package/src/init.js +2 -2
- package/src/webgl-utils/texture-utils.js +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/vertex-array.js"],"names":["log","Accessor","Buffer","VertexArrayObject","assert","stubRemovedMethods","ERR_ATTRIBUTE_TYPE","MULTI_LOCATION_ATTRIBUTE_REGEXP","DEPRECATIONS_V6","VertexArray","constructor","gl","opts","id","program","configuration","elements","elementsAccessor","values","accessors","unused","drawParams","buffer","attributes","vertexArrayObject","initialize","Object","seal","delete","props","reset","bindOnUse","setProps","MAX_ATTRIBUTES","Array","fill","setAttributes","setElementBuffer","clearDrawParams","getDrawParams","_updateDrawParams","assign","bind","locationOrName","value","_setAttribute","bindBuffer","elementBuffer","accessor","setBuffer","appAccessor","target","location","_resolveLocationAndAccessor","setConstant","arrayValue","size","length","_normalizeConstantArrayValue","enable","unbindBuffers","disableVertexAttribArray","handle","vertexAttribPointer","bindBuffers","bindForDraw","vertexCount","instanceCount","func","_setConstantAttributes","valueAccessor","INVALID_RESULT","name","_getAttributeIndex","Number","isFinite","once","accessInfo","_getAttributeInfo","currentAccessor","resolve","type","attributeName","getAttributeInfo","multiLocation","exec","locationOffset","getAttributeLocation","isArray","ArrayBuffer","isView","constant","Error","elementCount","Math","max","_setConstantAttributeZero","_setConstantAttribute","isSupported","constantAttributeZero","getConstantBuffer","isIndexed","isInstanced","indexCount","Infinity","_updateDrawParamsForLocation","getElementCount","indexType","indexOffset","offset","divisor","getVertexCount","min","setElements","deprecated"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport Accessor from './accessor';\nimport Buffer from './buffer';\nimport VertexArrayObject from './vertex-array-object';\nimport {assert} from '../utils/assert';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_ATTRIBUTE_TYPE =\n 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\n\n// This is done to support mat type attributes.\n// See section \"Notes about setting mat type attributes\"\n// in vertex-array.md\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\n\nconst DEPRECATIONS_V6 = [\n 'setBuffers',\n 'setGeneric',\n 'clearBindings',\n 'setLocations',\n 'setGenericValues',\n 'setDivisor',\n 'enable',\n 'disable'\n];\n\nexport default class VertexArray {\n constructor(gl, opts = {}) {\n // Use program's id if program is supplied but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n // super(gl, Object.assign({}, opts, {id}));\n\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n\n // Extracted information\n this.elements = null;\n this.elementsAccessor = null;\n this.values = null;\n this.accessors = null;\n this.unused = null;\n this.drawParams = null;\n this.buffer = null; // For attribute 0 on desktops, and created when unbinding buffers\n\n this.attributes = {};\n\n this.vertexArrayObject = new VertexArrayObject(gl);\n\n // Issue errors when using removed methods\n stubRemovedMethods(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);\n\n this.initialize(opts);\n Object.seal(this);\n }\n\n delete() {\n if (this.buffer) {\n this.buffer.delete();\n }\n\n this.vertexArrayObject.delete();\n }\n\n initialize(props = {}) {\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props);\n }\n\n // Resets all attributes (to default valued constants)\n reset() {\n // this.vertexArrayObject.reset();\n\n this.elements = null;\n this.elementsAccessor = null;\n const {MAX_ATTRIBUTES} = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n\n // Auto detects draw params\n this.drawParams = null;\n\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('elements' in props) {\n this.setElementBuffer(props.elements);\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n return this;\n }\n\n // Automatically called if buffers changed through VertexArray API\n clearDrawParams() {\n this.drawParams = null;\n }\n\n getDrawParams() {\n // Auto deduced draw parameters\n this.drawParams = this.drawParams || this._updateDrawParams();\n\n return this.drawParams;\n }\n\n // Set (bind) an array or map of vertex array buffers, either in numbered or named locations.\n // For names that are not present in `location`, the supplied buffers will be ignored.\n // if a single buffer of type GL.ELEMENT_ARRAY_BUFFER is present, it will be set as elements\n // Signatures:\n // {attributeName: buffer}\n // {attributeName: [buffer, accessor]}\n // {attributeName: (typed) array} => constant\n setAttributes(attributes) {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(() => {\n for (const locationOrName in attributes) {\n const value = attributes[locationOrName];\n this._setAttribute(locationOrName, value);\n }\n // Make sure we don't leave any bindings\n this.gl.bindBuffer(GL.ARRAY_BUFFER, null);\n });\n\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, accessor = {}) {\n this.elements = elementBuffer; // Save value for debugging\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n\n return this;\n }\n\n // Set a location in vertex attributes array to a buffer\n setBuffer(locationOrName, buffer, appAccessor = {}) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, appAccessor);\n }\n\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n buffer,\n buffer.accessor,\n appAccessor\n );\n\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n\n return this;\n }\n\n // Set attribute to constant value (small typed array corresponding to one vertex' worth of data)\n setConstant(locationOrName, arrayValue, appAccessor = {}) {\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n arrayValue,\n // Ensure that size isn't taken from program for multi-column\n // attributes\n Object.assign({size: arrayValue.length}, appAccessor)\n );\n\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // NOTE: We set the actual constant value later on bind. We can't set the value now since\n // constants are global and affect all other VertexArrays that have disabled attributes\n // in the same location.\n // We do disable the attribute which makes it use the global constant value at that location\n this.vertexArrayObject.enable(location, false);\n }\n\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, unbind temporarily to avoid conflicting with TransformFeedback\n unbindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.vertexArrayObject.setElementBuffer(null);\n }\n\n // Chrome does not like buffers that are bound to several binding points,\n // so we need to offer and unbind facility\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {accessor: {size: 4}});\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n });\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, rebind rebind after temporary unbind\n bindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.setElementBuffer(this.elements);\n }\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n const buffer = this.values[location];\n if (buffer instanceof Buffer) {\n this.setBuffer(location, buffer);\n }\n }\n });\n return this;\n }\n\n // Bind for use\n // When a vertex array is about to be used, we must:\n // - Set constant attributes (since these are stored on the context and reset on bind)\n // - Check if we need to initialize the buffer\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n\n this.vertexArrayObject.bind(() => {\n // Make sure that any constant attributes are updated (stored on the context, not the VAO)\n // Also handles attribute 0\n this._setConstantAttributes(vertexCount, instanceCount);\n\n value = func();\n });\n\n return value;\n }\n\n // PRIVATE\n\n // Resolve locations and accessors\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const INVALID_RESULT = {\n location: -1,\n accessor: null\n };\n\n const {location, name} = this._getAttributeIndex(locationOrName);\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n log.once(3, () => `unused value ${locationOrName} in ${this.id}`)();\n return INVALID_RESULT;\n }\n\n const accessInfo = this._getAttributeInfo(name || location);\n\n // Attribute location wasn't directly found.\n // Likely due to multi-location attributes (e.g. matrix)\n if (!accessInfo) {\n return INVALID_RESULT;\n }\n\n // Resolve the partial accessors into a final accessor\n const currentAccessor = this.accessors[location] || {};\n const accessor = Accessor.resolve(\n accessInfo.accessor,\n currentAccessor,\n valueAccessor,\n appAccessor\n );\n\n const {size, type} = accessor;\n assert(Number.isFinite(size) && Number.isFinite(type));\n\n return {location, accessor};\n }\n\n _getAttributeInfo(attributeName) {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return {location};\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n const name = multiLocation ? multiLocation[1] : locationOrName;\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n if (this.configuration) {\n return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name\n };\n }\n\n return {location: -1};\n }\n\n _setAttribute(locationOrName, value) {\n if (value instanceof Buffer) {\n // Signature: {attributeName: Buffer}\n this.setBuffer(locationOrName, value);\n } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n // Signature: {attributeName: [buffer, accessor]}\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n // Signature: {attributeName: constant}, constant == short (typed) array\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof Buffer) {\n // luma.gl v7: Support accessor objects with 'buffer' field\n // for interleaved data\n // Signature: {attributeName: {...accessor, buffer}}\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else {\n throw new Error(ERR_ATTRIBUTE_TYPE);\n }\n }\n\n // Updates all constant attribute values (constants are used when vertex attributes are disabled).\n // This needs to be done repeatedly since in contrast to buffer bindings,\n // constants are stored on the WebGL context, not the VAO\n _setConstantAttributes(vertexCount, instanceCount) {\n // TODO - use accessor to determine what length to use\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttributeZero(constant, elementCount);\n }\n\n for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n constant = this.values[location];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttribute(location, constant);\n }\n }\n }\n\n _setConstantAttributeZero(constant, elementCount) {\n if (VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true})) {\n this._setConstantAttribute(0, constant);\n return;\n }\n\n // Get a dummy buffer populated with repeated constants\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n\n // Set the buffer on location 0\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n\n _setConstantAttribute(location, constant) {\n VertexArrayObject.setConstant(this.gl, location, constant);\n }\n\n // Walks the buffers and updates draw parameters\n _updateDrawParams() {\n const drawParams = {\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n this._updateDrawParamsForLocation(drawParams, location);\n }\n\n if (this.elements) {\n // indexing is autodetected - buffer with target GL.ELEMENT_ARRAY_BUFFER\n // index type is saved for drawElement calls\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n\n // Post-calculation checks\n if (drawParams.indexCount === Infinity) {\n drawParams.indexCount = 0;\n }\n if (drawParams.vertexCount === Infinity) {\n drawParams.vertexCount = 0;\n }\n if (drawParams.instanceCount === Infinity) {\n drawParams.instanceCount = 0;\n }\n\n return drawParams;\n }\n\n _updateDrawParamsForLocation(drawParams, location) {\n const value = this.values[location];\n const accessor = this.accessors[location];\n\n if (!value) {\n return;\n }\n\n // Check if instanced (whether buffer or constant)\n const {divisor} = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n if (value instanceof Buffer) {\n const buffer = value;\n\n if (isInstanced) {\n // instance attribute\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n // normal attribute\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n\n // DEPRECATED in v6.x - but not warnings not properly implemented\n\n setElements(elementBuffer = null, accessor = {}) {\n log.deprecated('setElements', 'setElementBuffer')();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n}\n"],"file":"vertex-array.js"}
|
|
1
|
+
{"version":3,"file":"vertex-array.js","names":["log","Accessor","Buffer","VertexArrayObject","assert","stubRemovedMethods","ERR_ATTRIBUTE_TYPE","MULTI_LOCATION_ATTRIBUTE_REGEXP","DEPRECATIONS_V6","VertexArray","constructor","gl","opts","id","program","configuration","elements","elementsAccessor","values","accessors","unused","drawParams","buffer","attributes","vertexArrayObject","initialize","Object","seal","delete","props","reset","bindOnUse","setProps","MAX_ATTRIBUTES","Array","fill","setAttributes","setElementBuffer","clearDrawParams","getDrawParams","_updateDrawParams","assign","bind","locationOrName","value","_setAttribute","bindBuffer","elementBuffer","accessor","setBuffer","appAccessor","target","location","_resolveLocationAndAccessor","setConstant","arrayValue","size","length","_normalizeConstantArrayValue","enable","unbindBuffers","disableVertexAttribArray","handle","vertexAttribPointer","bindBuffers","bindForDraw","vertexCount","instanceCount","func","_setConstantAttributes","valueAccessor","INVALID_RESULT","name","_getAttributeIndex","Number","isFinite","once","accessInfo","_getAttributeInfo","currentAccessor","resolve","type","attributeName","getAttributeInfo","multiLocation","exec","locationOffset","getAttributeLocation","isArray","ArrayBuffer","isView","constant","Error","elementCount","Math","max","_setConstantAttributeZero","_setConstantAttribute","isSupported","constantAttributeZero","getConstantBuffer","isIndexed","isInstanced","indexCount","Infinity","_updateDrawParamsForLocation","getElementCount","indexType","indexOffset","offset","divisor","getVertexCount","min","setElements","deprecated"],"sources":["../../../src/classes/vertex-array.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {log} from '@luma.gl/gltools';\nimport Accessor from './accessor';\nimport Buffer from './buffer';\nimport VertexArrayObject from './vertex-array-object';\nimport {assert} from '../utils/assert';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_ATTRIBUTE_TYPE =\n 'VertexArray: attributes must be Buffers or constants (i.e. typed array)';\n\n// This is done to support mat type attributes.\n// See section \"Notes about setting mat type attributes\"\n// in vertex-array.md\nconst MULTI_LOCATION_ATTRIBUTE_REGEXP = /^(.+)__LOCATION_([0-9]+)$/;\n\nconst DEPRECATIONS_V6 = [\n 'setBuffers',\n 'setGeneric',\n 'clearBindings',\n 'setLocations',\n 'setGenericValues',\n 'setDivisor',\n 'enable',\n 'disable'\n];\n\nexport default class VertexArray {\n constructor(gl, opts = {}) {\n // Use program's id if program is supplied but no id is supplied\n const id = opts.id || (opts.program && opts.program.id);\n // super(gl, Object.assign({}, opts, {id}));\n\n this.id = id;\n this.gl = gl;\n this.configuration = null;\n\n // Extracted information\n this.elements = null;\n this.elementsAccessor = null;\n this.values = null;\n this.accessors = null;\n this.unused = null;\n this.drawParams = null;\n this.buffer = null; // For attribute 0 on desktops, and created when unbinding buffers\n\n this.attributes = {};\n\n this.vertexArrayObject = new VertexArrayObject(gl);\n\n // Issue errors when using removed methods\n stubRemovedMethods(this, 'VertexArray', 'v6.0', DEPRECATIONS_V6);\n\n this.initialize(opts);\n Object.seal(this);\n }\n\n delete() {\n if (this.buffer) {\n this.buffer.delete();\n }\n\n this.vertexArrayObject.delete();\n }\n\n initialize(props = {}) {\n this.reset();\n this.configuration = null;\n this.bindOnUse = false;\n return this.setProps(props);\n }\n\n // Resets all attributes (to default valued constants)\n reset() {\n // this.vertexArrayObject.reset();\n\n this.elements = null;\n this.elementsAccessor = null;\n const {MAX_ATTRIBUTES} = this.vertexArrayObject;\n this.values = new Array(MAX_ATTRIBUTES).fill(null);\n this.accessors = new Array(MAX_ATTRIBUTES).fill(null);\n this.unused = {};\n\n // Auto detects draw params\n this.drawParams = null;\n\n return this;\n }\n\n setProps(props) {\n if ('program' in props) {\n this.configuration = props.program && props.program.configuration;\n }\n if ('configuration' in props) {\n this.configuration = props.configuration;\n }\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('elements' in props) {\n this.setElementBuffer(props.elements);\n }\n if ('bindOnUse' in props) {\n props = props.bindOnUse;\n }\n return this;\n }\n\n // Automatically called if buffers changed through VertexArray API\n clearDrawParams() {\n this.drawParams = null;\n }\n\n getDrawParams() {\n // Auto deduced draw parameters\n this.drawParams = this.drawParams || this._updateDrawParams();\n\n return this.drawParams;\n }\n\n // Set (bind) an array or map of vertex array buffers, either in numbered or named locations.\n // For names that are not present in `location`, the supplied buffers will be ignored.\n // if a single buffer of type GL.ELEMENT_ARRAY_BUFFER is present, it will be set as elements\n // Signatures:\n // {attributeName: buffer}\n // {attributeName: [buffer, accessor]}\n // {attributeName: (typed) array} => constant\n setAttributes(attributes) {\n Object.assign(this.attributes, attributes);\n this.vertexArrayObject.bind(() => {\n for (const locationOrName in attributes) {\n const value = attributes[locationOrName];\n this._setAttribute(locationOrName, value);\n }\n // Make sure we don't leave any bindings\n this.gl.bindBuffer(GL.ARRAY_BUFFER, null);\n });\n\n return this;\n }\n\n // Set (bind) an elements buffer, for indexed rendering.\n // Must be a Buffer bound to GL.ELEMENT_ARRAY_BUFFER. Constants not supported\n setElementBuffer(elementBuffer = null, accessor = {}) {\n this.elements = elementBuffer; // Save value for debugging\n this.elementsAccessor = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setElementBuffer(elementBuffer, accessor);\n\n return this;\n }\n\n // Set a location in vertex attributes array to a buffer\n setBuffer(locationOrName, buffer, appAccessor = {}) {\n // Check target\n if (buffer.target === GL.ELEMENT_ARRAY_BUFFER) {\n return this.setElementBuffer(buffer, appAccessor);\n }\n\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n buffer,\n buffer.accessor,\n appAccessor\n );\n\n if (location >= 0) {\n this.values[location] = buffer;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n this.vertexArrayObject.setBuffer(location, buffer, accessor);\n }\n\n return this;\n }\n\n // Set attribute to constant value (small typed array corresponding to one vertex' worth of data)\n setConstant(locationOrName, arrayValue, appAccessor = {}) {\n const {location, accessor} = this._resolveLocationAndAccessor(\n locationOrName,\n arrayValue,\n // Ensure that size isn't taken from program for multi-column\n // attributes\n Object.assign({size: arrayValue.length}, appAccessor)\n );\n\n if (location >= 0) {\n arrayValue = this.vertexArrayObject._normalizeConstantArrayValue(arrayValue);\n\n this.values[location] = arrayValue;\n this.accessors[location] = accessor;\n this.clearDrawParams();\n\n // NOTE: We set the actual constant value later on bind. We can't set the value now since\n // constants are global and affect all other VertexArrays that have disabled attributes\n // in the same location.\n // We do disable the attribute which makes it use the global constant value at that location\n this.vertexArrayObject.enable(location, false);\n }\n\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, unbind temporarily to avoid conflicting with TransformFeedback\n unbindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.vertexArrayObject.setElementBuffer(null);\n }\n\n // Chrome does not like buffers that are bound to several binding points,\n // so we need to offer and unbind facility\n // WebGL offers disabling, but no clear way to set a VertexArray buffer to `null`\n // So we just bind all the attributes to the dummy \"attribute zero\" buffer\n this.buffer = this.buffer || new Buffer(this.gl, {accessor: {size: 4}});\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n if (this.values[location] instanceof Buffer) {\n this.gl.disableVertexAttribArray(location);\n this.gl.bindBuffer(GL.ARRAY_BUFFER, this.buffer.handle);\n this.gl.vertexAttribPointer(location, 1, GL.FLOAT, false, 0, 0);\n }\n }\n });\n return this;\n }\n\n // Workaround for Chrome TransformFeedback binding issue\n // If required, rebind rebind after temporary unbind\n bindBuffers() {\n this.vertexArrayObject.bind(() => {\n if (this.elements) {\n this.setElementBuffer(this.elements);\n }\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n const buffer = this.values[location];\n if (buffer instanceof Buffer) {\n this.setBuffer(location, buffer);\n }\n }\n });\n return this;\n }\n\n // Bind for use\n // When a vertex array is about to be used, we must:\n // - Set constant attributes (since these are stored on the context and reset on bind)\n // - Check if we need to initialize the buffer\n bindForDraw(vertexCount, instanceCount, func) {\n let value;\n\n this.vertexArrayObject.bind(() => {\n // Make sure that any constant attributes are updated (stored on the context, not the VAO)\n // Also handles attribute 0\n this._setConstantAttributes(vertexCount, instanceCount);\n\n value = func();\n });\n\n return value;\n }\n\n // PRIVATE\n\n // Resolve locations and accessors\n _resolveLocationAndAccessor(locationOrName, value, valueAccessor, appAccessor) {\n const INVALID_RESULT = {\n location: -1,\n accessor: null\n };\n\n const {location, name} = this._getAttributeIndex(locationOrName);\n if (!Number.isFinite(location) || location < 0) {\n this.unused[locationOrName] = value;\n log.once(3, () => `unused value ${locationOrName} in ${this.id}`)();\n return INVALID_RESULT;\n }\n\n const accessInfo = this._getAttributeInfo(name || location);\n\n // Attribute location wasn't directly found.\n // Likely due to multi-location attributes (e.g. matrix)\n if (!accessInfo) {\n return INVALID_RESULT;\n }\n\n // Resolve the partial accessors into a final accessor\n const currentAccessor = this.accessors[location] || {};\n const accessor = Accessor.resolve(\n accessInfo.accessor,\n currentAccessor,\n valueAccessor,\n appAccessor\n );\n\n const {size, type} = accessor;\n assert(Number.isFinite(size) && Number.isFinite(type));\n\n return {location, accessor};\n }\n\n _getAttributeInfo(attributeName) {\n return this.configuration && this.configuration.getAttributeInfo(attributeName);\n }\n\n _getAttributeIndex(locationOrName) {\n const location = Number(locationOrName);\n if (Number.isFinite(location)) {\n return {location};\n }\n\n const multiLocation = MULTI_LOCATION_ATTRIBUTE_REGEXP.exec(locationOrName);\n const name = multiLocation ? multiLocation[1] : locationOrName;\n const locationOffset = multiLocation ? Number(multiLocation[2]) : 0;\n\n if (this.configuration) {\n return {\n location: this.configuration.getAttributeLocation(name) + locationOffset,\n name\n };\n }\n\n return {location: -1};\n }\n\n _setAttribute(locationOrName, value) {\n if (value instanceof Buffer) {\n // Signature: {attributeName: Buffer}\n this.setBuffer(locationOrName, value);\n } else if (Array.isArray(value) && value.length && value[0] instanceof Buffer) {\n // Signature: {attributeName: [buffer, accessor]}\n const buffer = value[0];\n const accessor = value[1];\n this.setBuffer(locationOrName, buffer, accessor);\n } else if (ArrayBuffer.isView(value) || Array.isArray(value)) {\n // Signature: {attributeName: constant}, constant == short (typed) array\n const constant = value;\n this.setConstant(locationOrName, constant);\n } else if (value.buffer instanceof Buffer) {\n // luma.gl v7: Support accessor objects with 'buffer' field\n // for interleaved data\n // Signature: {attributeName: {...accessor, buffer}}\n const accessor = value;\n this.setBuffer(locationOrName, accessor.buffer, accessor);\n } else {\n throw new Error(ERR_ATTRIBUTE_TYPE);\n }\n }\n\n // Updates all constant attribute values (constants are used when vertex attributes are disabled).\n // This needs to be done repeatedly since in contrast to buffer bindings,\n // constants are stored on the WebGL context, not the VAO\n _setConstantAttributes(vertexCount, instanceCount) {\n // TODO - use accessor to determine what length to use\n const elementCount = Math.max(vertexCount | 0, instanceCount | 0);\n let constant = this.values[0];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttributeZero(constant, elementCount);\n }\n\n for (let location = 1; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n constant = this.values[location];\n if (ArrayBuffer.isView(constant)) {\n this._setConstantAttribute(location, constant);\n }\n }\n }\n\n _setConstantAttributeZero(constant, elementCount) {\n if (VertexArrayObject.isSupported(this.gl, {constantAttributeZero: true})) {\n this._setConstantAttribute(0, constant);\n return;\n }\n\n // Get a dummy buffer populated with repeated constants\n const buffer = this.vertexArrayObject.getConstantBuffer(elementCount, constant);\n\n // Set the buffer on location 0\n this.vertexArrayObject.setBuffer(0, buffer, this.accessors[0]);\n }\n\n _setConstantAttribute(location, constant) {\n VertexArrayObject.setConstant(this.gl, location, constant);\n }\n\n // Walks the buffers and updates draw parameters\n _updateDrawParams() {\n const drawParams = {\n isIndexed: false,\n isInstanced: false,\n indexCount: Infinity,\n vertexCount: Infinity,\n instanceCount: Infinity\n };\n\n for (let location = 0; location < this.vertexArrayObject.MAX_ATTRIBUTES; location++) {\n this._updateDrawParamsForLocation(drawParams, location);\n }\n\n if (this.elements) {\n // indexing is autodetected - buffer with target GL.ELEMENT_ARRAY_BUFFER\n // index type is saved for drawElement calls\n drawParams.elementCount = this.elements.getElementCount(this.elements.accessor);\n drawParams.isIndexed = true;\n drawParams.indexType = this.elementsAccessor.type || this.elements.accessor.type;\n drawParams.indexOffset = this.elementsAccessor.offset || 0;\n }\n\n // Post-calculation checks\n if (drawParams.indexCount === Infinity) {\n drawParams.indexCount = 0;\n }\n if (drawParams.vertexCount === Infinity) {\n drawParams.vertexCount = 0;\n }\n if (drawParams.instanceCount === Infinity) {\n drawParams.instanceCount = 0;\n }\n\n return drawParams;\n }\n\n _updateDrawParamsForLocation(drawParams, location) {\n const value = this.values[location];\n const accessor = this.accessors[location];\n\n if (!value) {\n return;\n }\n\n // Check if instanced (whether buffer or constant)\n const {divisor} = accessor;\n const isInstanced = divisor > 0;\n drawParams.isInstanced = drawParams.isInstanced || isInstanced;\n\n if (value instanceof Buffer) {\n const buffer = value;\n\n if (isInstanced) {\n // instance attribute\n const instanceCount = buffer.getVertexCount(accessor);\n drawParams.instanceCount = Math.min(drawParams.instanceCount, instanceCount);\n } else {\n // normal attribute\n const vertexCount = buffer.getVertexCount(accessor);\n drawParams.vertexCount = Math.min(drawParams.vertexCount, vertexCount);\n }\n }\n }\n\n // DEPRECATED in v6.x - but not warnings not properly implemented\n\n setElements(elementBuffer = null, accessor = {}) {\n log.deprecated('setElements', 'setElementBuffer')();\n return this.setElementBuffer(elementBuffer, accessor);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { getCompositeGLType } from '../webgl-utils/attribute-utils';
|
|
2
2
|
export function getDebugTableForProgramConfiguration(config) {
|
|
3
3
|
const table = {};
|
|
4
|
-
const header =
|
|
4
|
+
const header = "Accessors for ".concat(config.id);
|
|
5
5
|
|
|
6
6
|
for (const attributeInfo of config.attributeInfos) {
|
|
7
7
|
if (attributeInfo) {
|
|
8
8
|
const glslDeclaration = getGLSLDeclaration(attributeInfo);
|
|
9
|
-
table[
|
|
9
|
+
table["in ".concat(glslDeclaration)] = {
|
|
10
10
|
[header]: JSON.stringify(attributeInfo.accessor)
|
|
11
11
|
};
|
|
12
12
|
}
|
|
@@ -15,7 +15,7 @@ export function getDebugTableForProgramConfiguration(config) {
|
|
|
15
15
|
for (const varyingInfo of config.varyingInfos) {
|
|
16
16
|
if (varyingInfo) {
|
|
17
17
|
const glslDeclaration = getGLSLDeclaration(varyingInfo);
|
|
18
|
-
table[
|
|
18
|
+
table["out ".concat(glslDeclaration)] = {
|
|
19
19
|
[header]: JSON.stringify(varyingInfo.accessor)
|
|
20
20
|
};
|
|
21
21
|
}
|
|
@@ -32,7 +32,7 @@ function getGLSLDeclaration(attributeInfo) {
|
|
|
32
32
|
const typeAndName = getCompositeGLType(type, size);
|
|
33
33
|
|
|
34
34
|
if (typeAndName) {
|
|
35
|
-
return
|
|
35
|
+
return "".concat(typeAndName.name, " ").concat(attributeInfo.name);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
return attributeInfo.name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"debug-program-configuration.js","names":["getCompositeGLType","getDebugTableForProgramConfiguration","config","table","header","id","attributeInfo","attributeInfos","glslDeclaration","getGLSLDeclaration","JSON","stringify","accessor","varyingInfo","varyingInfos","type","size","typeAndName","name"],"sources":["../../../src/debug/debug-program-configuration.js"],"sourcesContent":["import {getCompositeGLType} from '../webgl-utils/attribute-utils';\n\nexport function getDebugTableForProgramConfiguration(config) {\n const table = {};\n\n const header = `Accessors for ${config.id}`;\n\n for (const attributeInfo of config.attributeInfos) {\n if (attributeInfo) {\n const glslDeclaration = getGLSLDeclaration(attributeInfo);\n table[`in ${glslDeclaration}`] = {[header]: JSON.stringify(attributeInfo.accessor)};\n }\n }\n\n for (const varyingInfo of config.varyingInfos) {\n if (varyingInfo) {\n const glslDeclaration = getGLSLDeclaration(varyingInfo);\n table[`out ${glslDeclaration}`] = {[header]: JSON.stringify(varyingInfo.accessor)};\n }\n }\n\n return table;\n}\n\nfunction getGLSLDeclaration(attributeInfo) {\n const {type, size} = attributeInfo.accessor;\n const typeAndName = getCompositeGLType(type, size);\n if (typeAndName) {\n return `${typeAndName.name} ${attributeInfo.name}`;\n }\n return attributeInfo.name;\n}\n"],"mappings":"AAAA,SAAQA,kBAAR,QAAiC,gCAAjC;AAEA,OAAO,SAASC,oCAAT,CAA8CC,MAA9C,EAAsD;EAC3D,MAAMC,KAAK,GAAG,EAAd;EAEA,MAAMC,MAAM,2BAAoBF,MAAM,CAACG,EAA3B,CAAZ;;EAEA,KAAK,MAAMC,aAAX,IAA4BJ,MAAM,CAACK,cAAnC,EAAmD;IACjD,IAAID,aAAJ,EAAmB;MACjB,MAAME,eAAe,GAAGC,kBAAkB,CAACH,aAAD,CAA1C;MACAH,KAAK,cAAOK,eAAP,EAAL,GAAiC;QAAC,CAACJ,MAAD,GAAUM,IAAI,CAACC,SAAL,CAAeL,aAAa,CAACM,QAA7B;MAAX,CAAjC;IACD;EACF;;EAED,KAAK,MAAMC,WAAX,IAA0BX,MAAM,CAACY,YAAjC,EAA+C;IAC7C,IAAID,WAAJ,EAAiB;MACf,MAAML,eAAe,GAAGC,kBAAkB,CAACI,WAAD,CAA1C;MACAV,KAAK,eAAQK,eAAR,EAAL,GAAkC;QAAC,CAACJ,MAAD,GAAUM,IAAI,CAACC,SAAL,CAAeE,WAAW,CAACD,QAA3B;MAAX,CAAlC;IACD;EACF;;EAED,OAAOT,KAAP;AACD;;AAED,SAASM,kBAAT,CAA4BH,aAA5B,EAA2C;EACzC,MAAM;IAACS,IAAD;IAAOC;EAAP,IAAeV,aAAa,CAACM,QAAnC;EACA,MAAMK,WAAW,GAAGjB,kBAAkB,CAACe,IAAD,EAAOC,IAAP,CAAtC;;EACA,IAAIC,WAAJ,EAAiB;IACf,iBAAUA,WAAW,CAACC,IAAtB,cAA8BZ,aAAa,CAACY,IAA5C;EACD;;EACD,OAAOZ,aAAa,CAACY,IAArB;AACD"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { assert } from '../utils/assert';
|
|
2
2
|
import { formatValue } from '../utils/format-value';
|
|
3
|
-
export function getDebugTableForUniforms({
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
export function getDebugTableForUniforms(_ref) {
|
|
4
|
+
let {
|
|
5
|
+
header = 'Uniforms',
|
|
6
|
+
program,
|
|
7
|
+
uniforms,
|
|
8
|
+
undefinedOnly = false
|
|
9
|
+
} = _ref;
|
|
9
10
|
assert(program);
|
|
10
11
|
const SHADER_MODULE_UNIFORM_REGEXP = '.*_.*';
|
|
11
12
|
const PROJECT_MODULE_UNIFORM_REGEXP = '.*Matrix';
|
|
@@ -66,7 +67,7 @@ export function getDebugTableForUniforms({
|
|
|
66
67
|
if (!table[uniformName]) {
|
|
67
68
|
unusedCount++;
|
|
68
69
|
unusedTable[uniformName] = {
|
|
69
|
-
Type:
|
|
70
|
+
Type: "NOT USED: ".concat(uniform),
|
|
70
71
|
[header]: formatValue(uniform)
|
|
71
72
|
};
|
|
72
73
|
}
|
|
@@ -81,13 +82,14 @@ export function getDebugTableForUniforms({
|
|
|
81
82
|
};
|
|
82
83
|
}
|
|
83
84
|
|
|
84
|
-
function addUniformToTable({
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
85
|
+
function addUniformToTable(_ref2) {
|
|
86
|
+
let {
|
|
87
|
+
table,
|
|
88
|
+
header,
|
|
89
|
+
uniforms,
|
|
90
|
+
uniformName,
|
|
91
|
+
undefinedOnly
|
|
92
|
+
} = _ref2;
|
|
91
93
|
const value = uniforms[uniformName];
|
|
92
94
|
const isDefined = isUniformDefined(value);
|
|
93
95
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"debug-uniforms.js","names":["assert","formatValue","getDebugTableForUniforms","header","program","uniforms","undefinedOnly","SHADER_MODULE_UNIFORM_REGEXP","PROJECT_MODULE_UNIFORM_REGEXP","uniformLocations","_uniformSetters","table","uniformNames","Object","keys","sort","count","uniformName","match","addUniformToTable","unusedCount","unusedTable","uniform","Type","value","isDefined","isUniformDefined","undefined"],"sources":["../../../src/debug/debug-uniforms.js"],"sourcesContent":["import {assert} from '../utils/assert';\nimport {formatValue} from '../utils/format-value';\n\n// Prepares a table suitable for console.table\n/* eslint-disable max-statements, complexity */\nexport function getDebugTableForUniforms({\n header = 'Uniforms',\n program,\n uniforms,\n undefinedOnly = false\n}) {\n assert(program);\n\n const SHADER_MODULE_UNIFORM_REGEXP = '.*_.*';\n const PROJECT_MODULE_UNIFORM_REGEXP = '.*Matrix'; // TODO - Use explicit list\n\n const uniformLocations = program._uniformSetters;\n const table = {}; // {[header]: {}};\n\n // Add program's provided uniforms (in alphabetical order)\n const uniformNames = Object.keys(uniformLocations).sort();\n\n let count = 0;\n\n // First add non-underscored uniforms (assumed not coming from shader modules)\n for (const uniformName of uniformNames) {\n if (\n !uniformName.match(SHADER_MODULE_UNIFORM_REGEXP) &&\n !uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)\n ) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n // add underscored uniforms (assumed from shader modules)\n for (const uniformName of uniformNames) {\n if (uniformName.match(PROJECT_MODULE_UNIFORM_REGEXP)) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n for (const uniformName of uniformNames) {\n if (!table[uniformName]) {\n if (addUniformToTable({table, header, uniforms, uniformName, undefinedOnly})) {\n count++;\n }\n }\n }\n\n // Create a table of unused uniforms\n let unusedCount = 0;\n const unusedTable = {};\n if (!undefinedOnly) {\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n if (!table[uniformName]) {\n unusedCount++;\n unusedTable[uniformName] = {\n Type: `NOT USED: ${uniform}`,\n [header]: formatValue(uniform)\n };\n }\n }\n }\n\n return {table, count, unusedTable, unusedCount};\n}\n\n// Helper\nfunction addUniformToTable({table, header, uniforms, uniformName, undefinedOnly}) {\n const value = uniforms[uniformName];\n const isDefined = isUniformDefined(value);\n if (!undefinedOnly || !isDefined) {\n table[uniformName] = {\n // Add program's unprovided uniforms\n [header]: isDefined ? formatValue(value) : 'N/A',\n 'Uniform Type': isDefined ? value : 'NOT PROVIDED'\n };\n return true;\n }\n return false;\n}\n\nfunction isUniformDefined(value) {\n return value !== undefined && value !== null;\n}\n"],"mappings":"AAAA,SAAQA,MAAR,QAAqB,iBAArB;AACA,SAAQC,WAAR,QAA0B,uBAA1B;AAIA,OAAO,SAASC,wBAAT,OAKJ;EAAA,IALsC;IACvCC,MAAM,GAAG,UAD8B;IAEvCC,OAFuC;IAGvCC,QAHuC;IAIvCC,aAAa,GAAG;EAJuB,CAKtC;EACDN,MAAM,CAACI,OAAD,CAAN;EAEA,MAAMG,4BAA4B,GAAG,OAArC;EACA,MAAMC,6BAA6B,GAAG,UAAtC;EAEA,MAAMC,gBAAgB,GAAGL,OAAO,CAACM,eAAjC;EACA,MAAMC,KAAK,GAAG,EAAd;EAGA,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYL,gBAAZ,EAA8BM,IAA9B,EAArB;EAEA,IAAIC,KAAK,GAAG,CAAZ;;EAGA,KAAK,MAAMC,WAAX,IAA0BL,YAA1B,EAAwC;IACtC,IACE,CAACK,WAAW,CAACC,KAAZ,CAAkBX,4BAAlB,CAAD,IACA,CAACU,WAAW,CAACC,KAAZ,CAAkBV,6BAAlB,CAFH,EAGE;MACA,IAAIW,iBAAiB,CAAC;QAACR,KAAD;QAAQR,MAAR;QAAgBE,QAAhB;QAA0BY,WAA1B;QAAuCX;MAAvC,CAAD,CAArB,EAA8E;QAC5EU,KAAK;MACN;IACF;EACF;;EAGD,KAAK,MAAMC,WAAX,IAA0BL,YAA1B,EAAwC;IACtC,IAAIK,WAAW,CAACC,KAAZ,CAAkBV,6BAAlB,CAAJ,EAAsD;MACpD,IAAIW,iBAAiB,CAAC;QAACR,KAAD;QAAQR,MAAR;QAAgBE,QAAhB;QAA0BY,WAA1B;QAAuCX;MAAvC,CAAD,CAArB,EAA8E;QAC5EU,KAAK;MACN;IACF;EACF;;EAED,KAAK,MAAMC,WAAX,IAA0BL,YAA1B,EAAwC;IACtC,IAAI,CAACD,KAAK,CAACM,WAAD,CAAV,EAAyB;MACvB,IAAIE,iBAAiB,CAAC;QAACR,KAAD;QAAQR,MAAR;QAAgBE,QAAhB;QAA0BY,WAA1B;QAAuCX;MAAvC,CAAD,CAArB,EAA8E;QAC5EU,KAAK;MACN;IACF;EACF;;EAGD,IAAII,WAAW,GAAG,CAAlB;EACA,MAAMC,WAAW,GAAG,EAApB;;EACA,IAAI,CAACf,aAAL,EAAoB;IAClB,KAAK,MAAMW,WAAX,IAA0BZ,QAA1B,EAAoC;MAClC,MAAMiB,OAAO,GAAGjB,QAAQ,CAACY,WAAD,CAAxB;;MACA,IAAI,CAACN,KAAK,CAACM,WAAD,CAAV,EAAyB;QACvBG,WAAW;QACXC,WAAW,CAACJ,WAAD,CAAX,GAA2B;UACzBM,IAAI,sBAAeD,OAAf,CADqB;UAEzB,CAACnB,MAAD,GAAUF,WAAW,CAACqB,OAAD;QAFI,CAA3B;MAID;IACF;EACF;;EAED,OAAO;IAACX,KAAD;IAAQK,KAAR;IAAeK,WAAf;IAA4BD;EAA5B,CAAP;AACD;;AAGD,SAASD,iBAAT,QAAkF;EAAA,IAAvD;IAACR,KAAD;IAAQR,MAAR;IAAgBE,QAAhB;IAA0BY,WAA1B;IAAuCX;EAAvC,CAAuD;EAChF,MAAMkB,KAAK,GAAGnB,QAAQ,CAACY,WAAD,CAAtB;EACA,MAAMQ,SAAS,GAAGC,gBAAgB,CAACF,KAAD,CAAlC;;EACA,IAAI,CAAClB,aAAD,IAAkB,CAACmB,SAAvB,EAAkC;IAChCd,KAAK,CAACM,WAAD,CAAL,GAAqB;MAEnB,CAACd,MAAD,GAAUsB,SAAS,GAAGxB,WAAW,CAACuB,KAAD,CAAd,GAAwB,KAFxB;MAGnB,gBAAgBC,SAAS,GAAGD,KAAH,GAAW;IAHjB,CAArB;IAKA,OAAO,IAAP;EACD;;EACD,OAAO,KAAP;AACD;;AAED,SAASE,gBAAT,CAA0BF,KAA1B,EAAiC;EAC/B,OAAOA,KAAK,KAAKG,SAAV,IAAuBH,KAAK,KAAK,IAAxC;AACD"}
|
|
@@ -2,10 +2,12 @@ import Buffer from '../classes/buffer';
|
|
|
2
2
|
import { getKey } from '../webgl-utils/constants-to-keys';
|
|
3
3
|
import { getCompositeGLType } from '../webgl-utils/attribute-utils';
|
|
4
4
|
import { formatValue } from '../utils/format-value';
|
|
5
|
-
export function getDebugTableForVertexArray({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export function getDebugTableForVertexArray(_ref) {
|
|
6
|
+
let {
|
|
7
|
+
vertexArray,
|
|
8
|
+
header = 'Attributes'
|
|
9
|
+
} = _ref;
|
|
10
|
+
|
|
9
11
|
if (!vertexArray.configuration) {
|
|
10
12
|
return {};
|
|
11
13
|
}
|
|
@@ -22,11 +24,11 @@ export function getDebugTableForVertexArray({
|
|
|
22
24
|
const info = vertexArray._getAttributeInfo(attributeLocation);
|
|
23
25
|
|
|
24
26
|
if (info) {
|
|
25
|
-
let rowHeader =
|
|
27
|
+
let rowHeader = "".concat(attributeLocation, ": ").concat(info.name);
|
|
26
28
|
const accessor = vertexArray.accessors[info.location];
|
|
27
29
|
|
|
28
30
|
if (accessor) {
|
|
29
|
-
rowHeader =
|
|
31
|
+
rowHeader = "".concat(attributeLocation, ": ").concat(getGLSLDeclaration(info.name, accessor));
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
table[rowHeader] = getDebugTableRow(vertexArray, attributes[attributeLocation], accessor, header);
|
|
@@ -77,17 +79,17 @@ function getDebugTableRow(vertexArray, attribute, accessor, header) {
|
|
|
77
79
|
|
|
78
80
|
if (accessor) {
|
|
79
81
|
const instanced = accessor.divisor > 0;
|
|
80
|
-
format =
|
|
82
|
+
format = "".concat(instanced ? 'I ' : 'P ', " ").concat(verts, " (x").concat(size, "=").concat(bytes, " bytes ").concat(getKey(gl, type), ")");
|
|
81
83
|
} else {
|
|
82
84
|
isInteger = true;
|
|
83
|
-
format =
|
|
85
|
+
format = "".concat(bytes, " bytes");
|
|
84
86
|
}
|
|
85
87
|
|
|
86
88
|
return {
|
|
87
|
-
[header]:
|
|
89
|
+
[header]: "".concat(marker).concat(formatValue(value, {
|
|
88
90
|
size,
|
|
89
91
|
isInteger
|
|
90
|
-
})
|
|
92
|
+
})),
|
|
91
93
|
'Format ': format
|
|
92
94
|
};
|
|
93
95
|
}
|
|
@@ -97,11 +99,11 @@ function getDebugTableRow(vertexArray, attribute, accessor, header) {
|
|
|
97
99
|
type = String(attribute.constructor.name).replace('Array', '');
|
|
98
100
|
isInteger = type.indexOf('nt') !== -1;
|
|
99
101
|
return {
|
|
100
|
-
[header]:
|
|
102
|
+
[header]: "".concat(formatValue(value, {
|
|
101
103
|
size,
|
|
102
104
|
isInteger
|
|
103
|
-
})
|
|
104
|
-
'Format ':
|
|
105
|
+
}), " (constant)"),
|
|
106
|
+
'Format ': "".concat(size, "x").concat(type, " (constant)")
|
|
105
107
|
};
|
|
106
108
|
}
|
|
107
109
|
|
|
@@ -111,6 +113,6 @@ function getGLSLDeclaration(name, accessor) {
|
|
|
111
113
|
size
|
|
112
114
|
} = accessor;
|
|
113
115
|
const typeAndName = getCompositeGLType(type, size);
|
|
114
|
-
return typeAndName ?
|
|
116
|
+
return typeAndName ? "".concat(name, " (").concat(typeAndName.name, ")") : name;
|
|
115
117
|
}
|
|
116
118
|
//# sourceMappingURL=debug-vertex-array.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"debug-vertex-array.js","names":["Buffer","getKey","getCompositeGLType","formatValue","getDebugTableForVertexArray","vertexArray","header","configuration","table","elements","ELEMENT_ARRAY_BUFFER","getDebugTableRow","attributes","values","attributeLocation","info","_getAttributeInfo","rowHeader","name","accessor","accessors","location","getGLSLDeclaration","attribute","gl","type","size","verts","bytes","isInteger","marker","value","String","replace","indexOf","buffer","data","changed","getDebugData","byteLength","BYTES_PER_ELEMENT","format","instanced","divisor","length","constructor","typeAndName"],"sources":["../../../src/debug/debug-vertex-array.js"],"sourcesContent":["import Buffer from '../classes/buffer';\nimport {getKey} from '../webgl-utils/constants-to-keys';\nimport {getCompositeGLType} from '../webgl-utils/attribute-utils';\nimport {formatValue} from '../utils/format-value';\n\n// Creates object suitable as input for console.table\nexport function getDebugTableForVertexArray({vertexArray, header = 'Attributes'}) {\n if (!vertexArray.configuration) {\n return {};\n }\n\n const table = {}; // {[header]: {}};\n\n // Add index (elements) if available\n if (vertexArray.elements) {\n // const elements = Object.assign({size: 1}, vertexArray.elements);\n table.ELEMENT_ARRAY_BUFFER = getDebugTableRow(vertexArray, vertexArray.elements, null, header);\n }\n\n // Add used attributes\n const attributes = vertexArray.values;\n\n for (const attributeLocation in attributes) {\n const info = vertexArray._getAttributeInfo(attributeLocation);\n if (info) {\n let rowHeader = `${attributeLocation}: ${info.name}`;\n const accessor = vertexArray.accessors[info.location];\n if (accessor) {\n rowHeader = `${attributeLocation}: ${getGLSLDeclaration(info.name, accessor)}`;\n }\n table[rowHeader] = getDebugTableRow(\n vertexArray,\n attributes[attributeLocation],\n accessor,\n header\n );\n }\n }\n\n return table;\n}\n\n/* eslint-disable max-statements */\nfunction getDebugTableRow(vertexArray, attribute, accessor, header) {\n const {gl} = vertexArray;\n\n if (!attribute) {\n return {\n [header]: 'null',\n 'Format ': 'N/A'\n };\n }\n\n let type = 'NOT PROVIDED';\n let size = 1;\n let verts = 0;\n let bytes = 0;\n\n let isInteger;\n let marker;\n let value;\n\n if (accessor) {\n type = accessor.type;\n size = accessor.size;\n\n // Generate a type name by dropping Array from Float32Array etc.\n type = String(type).replace('Array', '');\n\n // Look for 'nt' to detect integer types, e.g. Int32Array, Uint32Array\n isInteger = type.indexOf('nt') !== -1;\n }\n\n if (attribute instanceof Buffer) {\n const buffer = attribute;\n\n const {data, changed} = buffer.getDebugData();\n marker = changed ? '*' : '';\n\n value = data;\n // @ts-ignore\n bytes = buffer.byteLength;\n // @ts-ignore\n verts = bytes / data.BYTES_PER_ELEMENT / size;\n\n let format;\n\n if (accessor) {\n const instanced = accessor.divisor > 0;\n format = `${instanced ? 'I ' : 'P '} ${verts} (x${size}=${bytes} bytes ${getKey(gl, type)})`;\n } else {\n // element buffer\n isInteger = true;\n format = `${bytes} bytes`;\n }\n\n return {\n [header]: `${marker}${formatValue(value, {size, isInteger})}`,\n 'Format ': format\n };\n }\n\n // CONSTANT VALUE\n value = attribute;\n size = attribute.length;\n // Generate a type name by dropping Array from Float32Array etc.\n type = String(attribute.constructor.name).replace('Array', '');\n // Look for 'nt' to detect integer types, e.g. Int32Array, Uint32Array\n isInteger = type.indexOf('nt') !== -1;\n\n return {\n [header]: `${formatValue(value, {size, isInteger})} (constant)`,\n 'Format ': `${size}x${type} (constant)`\n };\n}\n/* eslint-ensable max-statements */\n\nfunction getGLSLDeclaration(name, accessor) {\n const {type, size} = accessor;\n const typeAndName = getCompositeGLType(type, size);\n return typeAndName ? `${name} (${typeAndName.name})` : name;\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@ import isOldIE from './check-old-ie';
|
|
|
2
2
|
import WEBGL_FEATURES from './webgl-features-table';
|
|
3
3
|
import { assert } from '../utils/assert';
|
|
4
4
|
const compiledGlslExtensions = {};
|
|
5
|
-
export default function canCompileGLGSExtension(gl, cap
|
|
5
|
+
export default function canCompileGLGSExtension(gl, cap) {
|
|
6
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
6
7
|
const feature = WEBGL_FEATURES[cap];
|
|
7
8
|
assert(feature, cap);
|
|
8
9
|
|
|
@@ -15,7 +16,7 @@ export default function canCompileGLGSExtension(gl, cap, options = {}) {
|
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
const extensionName = feature[0];
|
|
18
|
-
const source =
|
|
19
|
+
const source = "#extension GL_".concat(extensionName, " : enable\nvoid main(void) {}");
|
|
19
20
|
const shader = gl.createShader(35633);
|
|
20
21
|
gl.shaderSource(shader, source);
|
|
21
22
|
gl.compileShader(shader);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"check-glsl-extension.js","names":["isOldIE","WEBGL_FEATURES","assert","compiledGlslExtensions","canCompileGLGSExtension","gl","cap","options","feature","extensionName","source","shader","createShader","shaderSource","compileShader","canCompile","getShaderParameter","deleteShader"],"sources":["../../../src/features/check-glsl-extension.js"],"sourcesContent":["import isOldIE from './check-old-ie';\nimport WEBGL_FEATURES from './webgl-features-table';\nimport {assert} from '../utils/assert';\n\n// Enables feature detection in IE11 due to a bug where gl.getExtension may return true\n// but fail to compile when the extension is enabled in the shader. Specifically,\n// the OES_standard_derivatives extension fails to compile in IE11 even though its included\n// in the list of supported extensions.\nconst compiledGlslExtensions = {};\n\n// options allows user agent to be overridden for testing\nexport default function canCompileGLGSExtension(gl, cap, options = {}) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n if (!isOldIE(options)) {\n return true;\n }\n\n if (cap in compiledGlslExtensions) {\n return compiledGlslExtensions[cap];\n }\n\n const extensionName = feature[0];\n const source = `#extension GL_${extensionName} : enable\\nvoid main(void) {}`;\n\n const shader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n gl.deleteShader(shader);\n compiledGlslExtensions[cap] = canCompile;\n return canCompile;\n}\n"],"mappings":"AAAA,OAAOA,OAAP,MAAoB,gBAApB;AACA,OAAOC,cAAP,MAA2B,wBAA3B;AACA,SAAQC,MAAR,QAAqB,iBAArB;AAMA,MAAMC,sBAAsB,GAAG,EAA/B;AAGA,eAAe,SAASC,uBAAT,CAAiCC,EAAjC,EAAqCC,GAArC,EAAwD;EAAA,IAAdC,OAAc,uEAAJ,EAAI;EACrE,MAAMC,OAAO,GAAGP,cAAc,CAACK,GAAD,CAA9B;EACAJ,MAAM,CAACM,OAAD,EAAUF,GAAV,CAAN;;EAEA,IAAI,CAACN,OAAO,CAACO,OAAD,CAAZ,EAAuB;IACrB,OAAO,IAAP;EACD;;EAED,IAAID,GAAG,IAAIH,sBAAX,EAAmC;IACjC,OAAOA,sBAAsB,CAACG,GAAD,CAA7B;EACD;;EAED,MAAMG,aAAa,GAAGD,OAAO,CAAC,CAAD,CAA7B;EACA,MAAME,MAAM,2BAAoBD,aAApB,kCAAZ;EAEA,MAAME,MAAM,GAAGN,EAAE,CAACO,YAAH,OAAf;EACAP,EAAE,CAACQ,YAAH,CAAgBF,MAAhB,EAAwBD,MAAxB;EACAL,EAAE,CAACS,aAAH,CAAiBH,MAAjB;EACA,MAAMI,UAAU,GAAGV,EAAE,CAACW,kBAAH,CAAsBL,MAAtB,QAAnB;EACAN,EAAE,CAACY,YAAH,CAAgBN,MAAhB;EACAR,sBAAsB,CAACG,GAAD,CAAtB,GAA8BS,UAA9B;EACA,OAAOA,UAAP;AACD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export default function isOldIE(
|
|
1
|
+
export default function isOldIE() {
|
|
2
|
+
let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
2
3
|
const navigator = typeof window !== 'undefined' && window.navigator || {};
|
|
3
4
|
const userAgent = opts.userAgent || navigator.userAgent || '';
|
|
4
5
|
const isMSIE = userAgent.indexOf('MSIE ') !== -1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"check-old-ie.js","names":["isOldIE","opts","navigator","window","userAgent","isMSIE","indexOf","isTrident"],"sources":["../../../src/features/check-old-ie.js"],"sourcesContent":["// opts allows user agent to be overridden for testing\nexport default function isOldIE(opts = {}) {\n const navigator = (typeof window !== 'undefined' && window.navigator) || {};\n // @ts-ignore\n const userAgent = opts.userAgent || navigator.userAgent || '';\n // We only care about older versions of IE (IE 11 and below). Newer versions of IE (Edge)\n // have much better web standards support.\n const isMSIE = userAgent.indexOf('MSIE ') !== -1;\n const isTrident = userAgent.indexOf('Trident/') !== -1;\n return isMSIE || isTrident;\n}\n"],"mappings":"AACA,eAAe,SAASA,OAAT,GAA4B;EAAA,IAAXC,IAAW,uEAAJ,EAAI;EACzC,MAAMC,SAAS,GAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACD,SAAzC,IAAuD,EAAzE;EAEA,MAAME,SAAS,GAAGH,IAAI,CAACG,SAAL,IAAkBF,SAAS,CAACE,SAA5B,IAAyC,EAA3D;EAGA,MAAMC,MAAM,GAAGD,SAAS,CAACE,OAAV,CAAkB,OAAlB,MAA+B,CAAC,CAA/C;EACA,MAAMC,SAAS,GAAGH,SAAS,CAACE,OAAV,CAAkB,UAAlB,MAAkC,CAAC,CAArD;EACA,OAAOD,MAAM,IAAIE,SAAjB;AACD"}
|
|
@@ -33,7 +33,7 @@ function isFeatureSupported(gl, cap) {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
if (!gl.luma.caps[cap]) {
|
|
36
|
-
log.log(LOG_UNSUPPORTED_FEATURE,
|
|
36
|
+
log.log(LOG_UNSUPPORTED_FEATURE, "Feature: ".concat(cap, " not supported"))();
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
return gl.luma.caps[cap];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features.js","names":["WEBGL_FEATURES","isWebGL2","log","assert","LOG_UNSUPPORTED_FEATURE","hasFeature","gl","feature","hasFeatures","features","Array","isArray","every","isFeatureSupported","getFeatures","luma","caps","cap","undefined","queryFeature","isSupported","featureDefinition","extension","Boolean","getExtension"],"sources":["../../../src/features/features.js"],"sourcesContent":["// Feature detection for WebGL\n//\n// Provides a function that enables simple checking of which WebGL features are\n// available in an WebGL1 or WebGL2 environment.\n\nimport WEBGL_FEATURES from './webgl-features-table';\nimport {isWebGL2, log} from '@luma.gl/gltools';\nimport {assert} from '../utils/assert';\n\nconst LOG_UNSUPPORTED_FEATURE = 2;\n\n// Check one feature\nexport function hasFeature(gl, feature) {\n return hasFeatures(gl, feature);\n}\n\n// Check one or more features\nexport function hasFeatures(gl, features) {\n features = Array.isArray(features) ? features : [features];\n return features.every(feature => {\n return isFeatureSupported(gl, feature);\n });\n}\n\n// Return a list of supported features\nexport function getFeatures(gl) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n for (const cap in WEBGL_FEATURES) {\n if (gl.luma.caps[cap] === undefined) {\n gl.luma.caps[cap] = isFeatureSupported(gl, cap);\n }\n }\n return gl.luma.caps;\n}\n\n// TODO - cache the value\nfunction isFeatureSupported(gl, cap) {\n gl.luma = gl.luma || {};\n gl.luma.caps = gl.luma.caps || {};\n\n if (gl.luma.caps[cap] === undefined) {\n gl.luma.caps[cap] = queryFeature(gl, cap);\n }\n\n if (!gl.luma.caps[cap]) {\n log.log(LOG_UNSUPPORTED_FEATURE, `Feature: ${cap} not supported`)();\n }\n\n return gl.luma.caps[cap];\n}\n\nfunction queryFeature(gl, cap) {\n const feature = WEBGL_FEATURES[cap];\n assert(feature, cap);\n\n let isSupported;\n\n // Get extension name from table\n const featureDefinition = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];\n\n // Check if the value is dependent on checking one or more extensions\n if (typeof featureDefinition === 'function') {\n isSupported = featureDefinition(gl);\n } else if (Array.isArray(featureDefinition)) {\n isSupported = true;\n for (const extension of featureDefinition) {\n isSupported = isSupported && Boolean(gl.getExtension(extension));\n }\n } else if (typeof featureDefinition === 'string') {\n isSupported = Boolean(gl.getExtension(featureDefinition));\n } else if (typeof featureDefinition === 'boolean') {\n isSupported = featureDefinition;\n } else {\n assert(false);\n }\n\n return isSupported;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["getContextInfo","getGLContextInfo","getContextLimits","FEATURES","hasFeature","hasFeatures","getFeatures","default","canCompileGLGSExtension"],"sources":["../../../src/features/index.js"],"sourcesContent":["export {getContextInfo, getGLContextInfo, getContextLimits} from './limits';\nexport {FEATURES} from './webgl-features-table';\nexport {hasFeature, hasFeatures, getFeatures} from './features';\n\nexport {default as canCompileGLGSExtension} from './check-glsl-extension';\n"],"mappings":"AAAA,SAAQA,cAAR,EAAwBC,gBAAxB,EAA0CC,gBAA1C,QAAiE,UAAjE;AACA,SAAQC,QAAR,QAAuB,wBAAvB;AACA,SAAQC,UAAR,EAAoBC,WAApB,EAAiCC,WAAjC,QAAmD,YAAnD;AAEA,SAAQC,OAAO,IAAIC,uBAAnB,QAAiD,wBAAjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"limits.js","names":["WEBGL_LIMITS","isWebGL2","getContextDebugInfo","getContextLimits","gl","luma","limits","webgl1MinLimits","webgl2MinLimits","isWebgl2","parameter","limit","webgl1MinLimit","gl1","webgl2MinLimit","gl2","minLimit","limitNotAvailable","getExtension","extension","value","getParameter","getGLContextInfo","info","vendor","renderer","vendorMasked","rendererMasked","version","shadingLanguageVersion","getContextInfo","Object","assign"],"sources":["../../../src/features/limits.js"],"sourcesContent":["import GL from '@luma.gl/constants';\n\nimport WEBGL_LIMITS from './webgl-limits-table';\nimport {isWebGL2, getContextDebugInfo} from '@luma.gl/gltools';\n\nexport function getContextLimits(gl) {\n gl.luma = gl.luma || {};\n\n if (!gl.luma.limits) {\n gl.luma.limits = {};\n gl.luma.webgl1MinLimits = {};\n gl.luma.webgl2MinLimits = {};\n\n const isWebgl2 = isWebGL2(gl);\n\n // WEBGL limits\n for (const parameter in WEBGL_LIMITS) {\n const limit = WEBGL_LIMITS[parameter];\n\n const webgl1MinLimit = limit.gl1;\n const webgl2MinLimit = 'gl2' in limit ? limit.gl2 : limit.gl1;\n const minLimit = isWebgl2 ? webgl2MinLimit : webgl1MinLimit;\n\n // Check if we can query for this limit\n const limitNotAvailable =\n ('gl2' in limit && !isWebgl2) ||\n // @ts-ignore\n ('extension' in limit && !gl.getExtension(limit.extension));\n\n const value = limitNotAvailable ? minLimit : gl.getParameter(parameter);\n gl.luma.limits[parameter] = value;\n gl.luma.webgl1MinLimits[parameter] = webgl1MinLimit;\n gl.luma.webgl2MinLimits[parameter] = webgl2MinLimit;\n }\n }\n\n return gl.luma.limits;\n}\n\nexport function getGLContextInfo(gl) {\n gl.luma = gl.luma || {};\n\n const info = getContextDebugInfo(gl);\n if (!gl.luma.info) {\n gl.luma.info = {\n [GL.UNMASKED_VENDOR_WEBGL]: info.vendor,\n [GL.UNMASKED_RENDERER_WEBGL]: info.renderer,\n [GL.VENDOR]: info.vendorMasked,\n [GL.RENDERER]: info.rendererMasked,\n [GL.VERSION]: info.version,\n [GL.SHADING_LANGUAGE_VERSION]: info.shadingLanguageVersion\n };\n }\n\n return gl.luma.info;\n}\n\nexport function getContextInfo(gl) {\n return Object.assign(getContextDebugInfo(gl), {\n limits: getContextLimits(gl),\n info: getGLContextInfo(gl),\n webgl1MinLimits: gl.luma.webgl1MinLimits,\n webgl2MinLimits: gl.luma.webgl2MinLimits\n });\n}\n"],"mappings":"AAEA,OAAOA,YAAP,MAAyB,sBAAzB;AACA,SAAQC,QAAR,EAAkBC,mBAAlB,QAA4C,kBAA5C;AAEA,OAAO,SAASC,gBAAT,CAA0BC,EAA1B,EAA8B;EACnCA,EAAE,CAACC,IAAH,GAAUD,EAAE,CAACC,IAAH,IAAW,EAArB;;EAEA,IAAI,CAACD,EAAE,CAACC,IAAH,CAAQC,MAAb,EAAqB;IACnBF,EAAE,CAACC,IAAH,CAAQC,MAAR,GAAiB,EAAjB;IACAF,EAAE,CAACC,IAAH,CAAQE,eAAR,GAA0B,EAA1B;IACAH,EAAE,CAACC,IAAH,CAAQG,eAAR,GAA0B,EAA1B;IAEA,MAAMC,QAAQ,GAAGR,QAAQ,CAACG,EAAD,CAAzB;;IAGA,KAAK,MAAMM,SAAX,IAAwBV,YAAxB,EAAsC;MACpC,MAAMW,KAAK,GAAGX,YAAY,CAACU,SAAD,CAA1B;MAEA,MAAME,cAAc,GAAGD,KAAK,CAACE,GAA7B;MACA,MAAMC,cAAc,GAAG,SAASH,KAAT,GAAiBA,KAAK,CAACI,GAAvB,GAA6BJ,KAAK,CAACE,GAA1D;MACA,MAAMG,QAAQ,GAAGP,QAAQ,GAAGK,cAAH,GAAoBF,cAA7C;MAGA,MAAMK,iBAAiB,GACpB,SAASN,KAAT,IAAkB,CAACF,QAApB,IAEC,eAAeE,KAAf,IAAwB,CAACP,EAAE,CAACc,YAAH,CAAgBP,KAAK,CAACQ,SAAtB,CAH5B;MAKA,MAAMC,KAAK,GAAGH,iBAAiB,GAAGD,QAAH,GAAcZ,EAAE,CAACiB,YAAH,CAAgBX,SAAhB,CAA7C;MACAN,EAAE,CAACC,IAAH,CAAQC,MAAR,CAAeI,SAAf,IAA4BU,KAA5B;MACAhB,EAAE,CAACC,IAAH,CAAQE,eAAR,CAAwBG,SAAxB,IAAqCE,cAArC;MACAR,EAAE,CAACC,IAAH,CAAQG,eAAR,CAAwBE,SAAxB,IAAqCI,cAArC;IACD;EACF;;EAED,OAAOV,EAAE,CAACC,IAAH,CAAQC,MAAf;AACD;AAED,OAAO,SAASgB,gBAAT,CAA0BlB,EAA1B,EAA8B;EACnCA,EAAE,CAACC,IAAH,GAAUD,EAAE,CAACC,IAAH,IAAW,EAArB;EAEA,MAAMkB,IAAI,GAAGrB,mBAAmB,CAACE,EAAD,CAAhC;;EACA,IAAI,CAACA,EAAE,CAACC,IAAH,CAAQkB,IAAb,EAAmB;IACjBnB,EAAE,CAACC,IAAH,CAAQkB,IAAR,GAAe;MACb,SAA4BA,IAAI,CAACC,MADpB;MAEb,SAA8BD,IAAI,CAACE,QAFtB;MAGb,QAAaF,IAAI,CAACG,YAHL;MAIb,QAAeH,IAAI,CAACI,cAJP;MAKb,QAAcJ,IAAI,CAACK,OALN;MAMb,SAA+BL,IAAI,CAACM;IANvB,CAAf;EAQD;;EAED,OAAOzB,EAAE,CAACC,IAAH,CAAQkB,IAAf;AACD;AAED,OAAO,SAASO,cAAT,CAAwB1B,EAAxB,EAA4B;EACjC,OAAO2B,MAAM,CAACC,MAAP,CAAc9B,mBAAmB,CAACE,EAAD,CAAjC,EAAuC;IAC5CE,MAAM,EAAEH,gBAAgB,CAACC,EAAD,CADoB;IAE5CmB,IAAI,EAAED,gBAAgB,CAAClB,EAAD,CAFsB;IAG5CG,eAAe,EAAEH,EAAE,CAACC,IAAH,CAAQE,eAHmB;IAI5CC,eAAe,EAAEJ,EAAE,CAACC,IAAH,CAAQG;EAJmB,CAAvC,CAAP;AAMD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"webgl-features-table.js","names":["Framebuffer","Texture2D","FEATURES","WEBGL2","VERTEX_ARRAY_OBJECT","TIMER_QUERY","INSTANCED_RENDERING","MULTIPLE_RENDER_TARGETS","ELEMENT_INDEX_UINT32","BLEND_EQUATION_MINMAX","FLOAT_BLEND","COLOR_ENCODING_SRGB","TEXTURE_DEPTH","TEXTURE_FLOAT","TEXTURE_HALF_FLOAT","TEXTURE_FILTER_LINEAR_FLOAT","TEXTURE_FILTER_LINEAR_HALF_FLOAT","TEXTURE_FILTER_ANISOTROPIC","COLOR_ATTACHMENT_RGBA32F","COLOR_ATTACHMENT_FLOAT","COLOR_ATTACHMENT_HALF_FLOAT","GLSL_FRAG_DATA","GLSL_FRAG_DEPTH","GLSL_DERIVATIVES","GLSL_TEXTURE_LOD","checkFloat32ColorAttachment","gl","testTexture","format","type","dataFormat","testFb","id","check","attachments","status","getStatus","delete"],"sources":["../../../src/features/webgl-features-table.js"],"sourcesContent":["import Framebuffer from '../classes/framebuffer';\nimport Texture2D from '../classes/texture-2d';\n// TODO - this should be the default export, test cases need updating\nexport const FEATURES = {\n WEBGL2: 'WEBGL2',\n\n // API SUPPORT\n VERTEX_ARRAY_OBJECT: 'VERTEX_ARRAY_OBJECT',\n TIMER_QUERY: 'TIMER_QUERY',\n INSTANCED_RENDERING: 'INSTANCED_RENDERING',\n MULTIPLE_RENDER_TARGETS: 'MULTIPLE_RENDER_TARGETS',\n\n // FEATURES\n ELEMENT_INDEX_UINT32: 'ELEMENT_INDEX_UINT32',\n\n // BLENDING\n BLEND_EQUATION_MINMAX: 'BLEND_EQUATION_MINMAX',\n FLOAT_BLEND: 'FLOAT_BLEND',\n\n // TEXTURES: '// TEXTURES', RENDERBUFFERS\n COLOR_ENCODING_SRGB: 'COLOR_ENCODING_SRGB',\n\n // TEXTURES\n TEXTURE_DEPTH: 'TEXTURE_DEPTH',\n TEXTURE_FLOAT: 'TEXTURE_FLOAT',\n TEXTURE_HALF_FLOAT: 'TEXTURE_HALF_FLOAT',\n\n TEXTURE_FILTER_LINEAR_FLOAT: 'TEXTURE_FILTER_LINEAR_FLOAT',\n TEXTURE_FILTER_LINEAR_HALF_FLOAT: 'TEXTURE_FILTER_LINEAR_HALF_FLOAT',\n TEXTURE_FILTER_ANISOTROPIC: 'TEXTURE_FILTER_ANISOTROPIC',\n\n // FRAMEBUFFERS: '// FRAMEBUFFERS', TEXTURES AND RENDERBUFFERS\n COLOR_ATTACHMENT_RGBA32F: 'COLOR_ATTACHMENT_RGBA32F',\n COLOR_ATTACHMENT_FLOAT: 'COLOR_ATTACHMENT_FLOAT',\n COLOR_ATTACHMENT_HALF_FLOAT: 'COLOR_ATTACHMENT_HALF_FLOAT',\n\n // GLSL extensions\n GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',\n GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',\n GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',\n GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD'\n};\n\n// function to test if Float 32 bit format texture can be bound as color attachment\nfunction checkFloat32ColorAttachment(gl) {\n const testTexture = new Texture2D(gl, {\n format: gl.RGBA,\n type: gl.FLOAT,\n dataFormat: gl.RGBA\n });\n const testFb = new Framebuffer(gl, {\n id: `test-framebuffer`,\n check: false,\n attachments: {\n [gl.COLOR_ATTACHMENT0]: testTexture\n }\n });\n const status = testFb.getStatus();\n testTexture.delete();\n testFb.delete();\n return status === gl.FRAMEBUFFER_COMPLETE;\n}\n\n// Defines luma.gl \"feature\" names and semantics\n// Format: 'feature-name: [WebGL1 support, WebGL2 support] / [WebGL1 and WebGL2 support]', when support is 'string' it is the name of the extension\nexport default {\n [FEATURES.WEBGL2]: [false, true],\n\n // API SUPPORT\n [FEATURES.VERTEX_ARRAY_OBJECT]: ['OES_vertex_array_object', true],\n [FEATURES.TIMER_QUERY]: ['EXT_disjoint_timer_query', 'EXT_disjoint_timer_query_webgl2'],\n [FEATURES.INSTANCED_RENDERING]: ['ANGLE_instanced_arrays', true],\n [FEATURES.MULTIPLE_RENDER_TARGETS]: ['WEBGL_draw_buffers', true],\n\n // FEATURES\n [FEATURES.ELEMENT_INDEX_UINT32]: ['OES_element_index_uint', true],\n\n // BLENDING\n [FEATURES.BLEND_EQUATION_MINMAX]: ['EXT_blend_minmax', true],\n [FEATURES.FLOAT_BLEND]: ['EXT_float_blend'],\n\n // TEXTURES, RENDERBUFFERS\n [FEATURES.COLOR_ENCODING_SRGB]: ['EXT_sRGB', true],\n\n // TEXTURES\n [FEATURES.TEXTURE_DEPTH]: ['WEBGL_depth_texture', true],\n [FEATURES.TEXTURE_FLOAT]: ['OES_texture_float', true],\n [FEATURES.TEXTURE_HALF_FLOAT]: ['OES_texture_half_float', true],\n\n [FEATURES.TEXTURE_FILTER_LINEAR_FLOAT]: ['OES_texture_float_linear'],\n [FEATURES.TEXTURE_FILTER_LINEAR_HALF_FLOAT]: ['OES_texture_half_float_linear'],\n [FEATURES.TEXTURE_FILTER_ANISOTROPIC]: ['EXT_texture_filter_anisotropic'],\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n [FEATURES.COLOR_ATTACHMENT_RGBA32F]: [checkFloat32ColorAttachment, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_FLOAT]: [false, 'EXT_color_buffer_float'],\n [FEATURES.COLOR_ATTACHMENT_HALF_FLOAT]: ['EXT_color_buffer_half_float'],\n\n // GLSL extensions\n [FEATURES.GLSL_FRAG_DATA]: ['WEBGL_draw_buffers', true],\n [FEATURES.GLSL_FRAG_DEPTH]: ['EXT_frag_depth', true],\n [FEATURES.GLSL_DERIVATIVES]: ['OES_standard_derivatives', true],\n [FEATURES.GLSL_TEXTURE_LOD]: ['EXT_shader_texture_lod', true]\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"webgl-limits-table.js","names":["gl1","Float32Array","gl2","Int32Array","negative"],"sources":["../../../src/features/webgl-limits-table.js"],"sourcesContent":["import GL from '@luma.gl/constants';\n\nexport default {\n [GL.ALIASED_LINE_WIDTH_RANGE]: {gl1: new Float32Array([1, 1])},\n [GL.ALIASED_POINT_SIZE_RANGE]: {gl1: new Float32Array([1, 1])},\n [GL.MAX_TEXTURE_SIZE]: {gl1: 64, gl2: 2048}, // GLint\n [GL.MAX_CUBE_MAP_TEXTURE_SIZE]: {gl1: 16}, // GLint\n [GL.MAX_TEXTURE_IMAGE_UNITS]: {gl1: 8}, // GLint\n [GL.MAX_COMBINED_TEXTURE_IMAGE_UNITS]: {gl1: 8}, // GLint\n [GL.MAX_VERTEX_TEXTURE_IMAGE_UNITS]: {gl1: 0}, // GLint\n [GL.MAX_RENDERBUFFER_SIZE]: {gl1: 1}, // GLint\n [GL.MAX_VARYING_VECTORS]: {gl1: 8}, // GLint\n [GL.MAX_VERTEX_ATTRIBS]: {gl1: 8}, // GLint\n [GL.MAX_VERTEX_UNIFORM_VECTORS]: {gl1: 128}, // GLint\n [GL.MAX_FRAGMENT_UNIFORM_VECTORS]: {gl1: 16}, // GLint\n [GL.MAX_VIEWPORT_DIMS]: {gl1: new Int32Array([0, 0])},\n\n // Extensions\n // [GL.MAX_TEXTURE_MAX_ANISOTROPY_EXT]: {gl1: 1.0, extension: 'EXT_texture_filter_anisotropic'},\n\n // WebGL2 Limits\n [GL.MAX_3D_TEXTURE_SIZE]: {gl1: 0, gl2: 256}, // GLint\n [GL.MAX_ARRAY_TEXTURE_LAYERS]: {gl1: 0, gl2: 256}, // GLint\n [GL.MAX_CLIENT_WAIT_TIMEOUT_WEBGL]: {gl1: 0, gl2: 0}, // GLint64\n [GL.MAX_COLOR_ATTACHMENTS]: {gl1: 0, gl2: 4}, // GLint\n [GL.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS]: {gl1: 0, gl2: 0}, // GLint64\n [GL.MAX_COMBINED_UNIFORM_BLOCKS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS]: {gl1: 0, gl2: 0}, // GLint64\n [GL.MAX_DRAW_BUFFERS]: {gl1: 0, gl2: 4}, // GLint\n [GL.MAX_ELEMENT_INDEX]: {gl1: 0, gl2: 0}, // GLint64\n [GL.MAX_ELEMENTS_INDICES]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_ELEMENTS_VERTICES]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_FRAGMENT_INPUT_COMPONENTS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_FRAGMENT_UNIFORM_BLOCKS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_FRAGMENT_UNIFORM_COMPONENTS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_SAMPLES]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_SERVER_WAIT_TIMEOUT]: {gl1: 0, gl2: 0}, // GLint64\n [GL.MAX_TEXTURE_LOD_BIAS]: {gl1: 0, gl2: 0}, // GLfloat\n [GL.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_UNIFORM_BLOCK_SIZE]: {gl1: 0, gl2: 0}, // GLint64\n [GL.MAX_UNIFORM_BUFFER_BINDINGS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_VARYING_COMPONENTS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_VERTEX_OUTPUT_COMPONENTS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_VERTEX_UNIFORM_BLOCKS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MAX_VERTEX_UNIFORM_COMPONENTS]: {gl1: 0, gl2: 0}, // GLint\n [GL.MIN_PROGRAM_TEXEL_OFFSET]: {gl1: 0, gl2: -8, negative: true}, // GLint\n [GL.MAX_PROGRAM_TEXEL_OFFSET]: {gl1: 0, gl2: 7}, // GLint\n [GL.UNIFORM_BUFFER_OFFSET_ALIGNMENT]: {gl1: 0, gl2: 0} // GLint\n};\n"],"mappings":"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"}
|