@luma.gl/webgl 8.5.16 → 8.5.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/dist.js +44 -44
  2. package/dist/dist.min.js +1 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/classes/accessor.js.map +1 -1
  5. package/dist/es5/classes/buffer.js.map +1 -1
  6. package/dist/es5/classes/clear.js.map +1 -1
  7. package/dist/es5/classes/copy-and-blit.js.map +1 -1
  8. package/dist/es5/classes/framebuffer.js.map +1 -1
  9. package/dist/es5/classes/program-configuration.js.map +1 -1
  10. package/dist/es5/classes/program.js.map +1 -1
  11. package/dist/es5/classes/query.js.map +1 -1
  12. package/dist/es5/classes/renderbuffer-formats.js.map +1 -1
  13. package/dist/es5/classes/renderbuffer.js.map +1 -1
  14. package/dist/es5/classes/resource.js +20 -19
  15. package/dist/es5/classes/resource.js.map +1 -1
  16. package/dist/es5/classes/shader.js.map +1 -1
  17. package/dist/es5/classes/texture-2d.js.map +1 -1
  18. package/dist/es5/classes/texture-3d.js.map +1 -1
  19. package/dist/es5/classes/texture-cube.js.map +1 -1
  20. package/dist/es5/classes/texture-formats.js.map +1 -1
  21. package/dist/es5/classes/texture.js.map +1 -1
  22. package/dist/es5/classes/transform-feedback.js.map +1 -1
  23. package/dist/es5/classes/uniform-buffer-layout.js.map +1 -1
  24. package/dist/es5/classes/uniforms.js.map +1 -1
  25. package/dist/es5/classes/vertex-array-object.js.map +1 -1
  26. package/dist/es5/classes/vertex-array.js.map +1 -1
  27. package/dist/es5/debug/debug-program-configuration.js.map +1 -1
  28. package/dist/es5/debug/debug-uniforms.js.map +1 -1
  29. package/dist/es5/debug/debug-vertex-array.js.map +1 -1
  30. package/dist/es5/features/check-glsl-extension.js.map +1 -1
  31. package/dist/es5/features/check-old-ie.js.map +1 -1
  32. package/dist/es5/features/features.js.map +1 -1
  33. package/dist/es5/features/index.js.map +1 -1
  34. package/dist/es5/features/limits.js.map +1 -1
  35. package/dist/es5/features/webgl-features-table.js.map +1 -1
  36. package/dist/es5/features/webgl-limits-table.js.map +1 -1
  37. package/dist/es5/glsl-utils/format-glsl-error.js.map +1 -1
  38. package/dist/es5/glsl-utils/get-shader-name.js.map +1 -1
  39. package/dist/es5/glsl-utils/get-shader-type-name.js.map +1 -1
  40. package/dist/es5/glsl-utils/get-shader-version.js.map +1 -1
  41. package/dist/es5/glsl-utils/index.js.map +1 -1
  42. package/dist/es5/index.js.map +1 -1
  43. package/dist/es5/init.js +1 -1
  44. package/dist/es5/init.js.map +1 -1
  45. package/dist/es5/utils/array-utils-flat.js.map +1 -1
  46. package/dist/es5/utils/assert.js.map +1 -1
  47. package/dist/es5/utils/check-props.js.map +1 -1
  48. package/dist/es5/utils/format-value.js.map +1 -1
  49. package/dist/es5/utils/is-old-ie.js.map +1 -1
  50. package/dist/es5/utils/load-file.js.map +1 -1
  51. package/dist/es5/utils/stub-methods.js.map +1 -1
  52. package/dist/es5/utils/utils.js.map +1 -1
  53. package/dist/es5/webgl-utils/attribute-utils.js.map +1 -1
  54. package/dist/es5/webgl-utils/constants-to-keys.js.map +1 -1
  55. package/dist/es5/webgl-utils/format-utils.js.map +1 -1
  56. package/dist/es5/webgl-utils/get-error.js.map +1 -1
  57. package/dist/es5/webgl-utils/request-animation-frame.js.map +1 -1
  58. package/dist/es5/webgl-utils/texture-utils.js.map +1 -1
  59. package/dist/es5/webgl-utils/typed-array-utils.js.map +1 -1
  60. package/dist/esm/bundle.js.map +1 -1
  61. package/dist/esm/classes/accessor.js.map +1 -1
  62. package/dist/esm/classes/buffer.js.map +1 -1
  63. package/dist/esm/classes/clear.js.map +1 -1
  64. package/dist/esm/classes/copy-and-blit.js.map +1 -1
  65. package/dist/esm/classes/framebuffer.js.map +1 -1
  66. package/dist/esm/classes/program-configuration.js.map +1 -1
  67. package/dist/esm/classes/program.js.map +1 -1
  68. package/dist/esm/classes/query.js.map +1 -1
  69. package/dist/esm/classes/renderbuffer-formats.js.map +1 -1
  70. package/dist/esm/classes/renderbuffer.js.map +1 -1
  71. package/dist/esm/classes/resource.js +15 -17
  72. package/dist/esm/classes/resource.js.map +1 -1
  73. package/dist/esm/classes/shader.js.map +1 -1
  74. package/dist/esm/classes/texture-2d.js.map +1 -1
  75. package/dist/esm/classes/texture-3d.js.map +1 -1
  76. package/dist/esm/classes/texture-cube.js.map +1 -1
  77. package/dist/esm/classes/texture-formats.js.map +1 -1
  78. package/dist/esm/classes/texture.js.map +1 -1
  79. package/dist/esm/classes/transform-feedback.js.map +1 -1
  80. package/dist/esm/classes/uniform-buffer-layout.js.map +1 -1
  81. package/dist/esm/classes/uniforms.js.map +1 -1
  82. package/dist/esm/classes/vertex-array-object.js.map +1 -1
  83. package/dist/esm/classes/vertex-array.js.map +1 -1
  84. package/dist/esm/debug/debug-program-configuration.js.map +1 -1
  85. package/dist/esm/debug/debug-uniforms.js.map +1 -1
  86. package/dist/esm/debug/debug-vertex-array.js.map +1 -1
  87. package/dist/esm/features/check-glsl-extension.js.map +1 -1
  88. package/dist/esm/features/check-old-ie.js.map +1 -1
  89. package/dist/esm/features/features.js.map +1 -1
  90. package/dist/esm/features/index.js.map +1 -1
  91. package/dist/esm/features/limits.js.map +1 -1
  92. package/dist/esm/features/webgl-features-table.js.map +1 -1
  93. package/dist/esm/features/webgl-limits-table.js.map +1 -1
  94. package/dist/esm/glsl-utils/format-glsl-error.js.map +1 -1
  95. package/dist/esm/glsl-utils/get-shader-name.js.map +1 -1
  96. package/dist/esm/glsl-utils/get-shader-type-name.js.map +1 -1
  97. package/dist/esm/glsl-utils/get-shader-version.js.map +1 -1
  98. package/dist/esm/glsl-utils/index.js.map +1 -1
  99. package/dist/esm/index.js.map +1 -1
  100. package/dist/esm/init.js +1 -1
  101. package/dist/esm/init.js.map +1 -1
  102. package/dist/esm/utils/array-utils-flat.js.map +1 -1
  103. package/dist/esm/utils/assert.js.map +1 -1
  104. package/dist/esm/utils/check-props.js.map +1 -1
  105. package/dist/esm/utils/format-value.js.map +1 -1
  106. package/dist/esm/utils/is-old-ie.js.map +1 -1
  107. package/dist/esm/utils/load-file.js.map +1 -1
  108. package/dist/esm/utils/stub-methods.js.map +1 -1
  109. package/dist/esm/utils/utils.js.map +1 -1
  110. package/dist/esm/webgl-utils/attribute-utils.js.map +1 -1
  111. package/dist/esm/webgl-utils/constants-to-keys.js.map +1 -1
  112. package/dist/esm/webgl-utils/format-utils.js.map +1 -1
  113. package/dist/esm/webgl-utils/get-error.js.map +1 -1
  114. package/dist/esm/webgl-utils/request-animation-frame.js.map +1 -1
  115. package/dist/esm/webgl-utils/texture-utils.js.map +1 -1
  116. package/dist/esm/webgl-utils/typed-array-utils.js.map +1 -1
  117. package/package.json +4 -4
  118. package/src/classes/resource.js +21 -21
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-array.js","names":["ERR_ATTRIBUTE_TYPE","MULTI_LOCATION_ATTRIBUTE_REGEXP","DEPRECATIONS_V6","VertexArray","gl","opts","id","program","configuration","elements","elementsAccessor","values","accessors","unused","drawParams","buffer","attributes","vertexArrayObject","VertexArrayObject","stubRemovedMethods","initialize","Object","seal","delete","props","reset","bindOnUse","setProps","MAX_ATTRIBUTES","Array","fill","setAttributes","setElementBuffer","_updateDrawParams","assign","bind","locationOrName","value","_setAttribute","bindBuffer","elementBuffer","accessor","clearDrawParams","appAccessor","target","_resolveLocationAndAccessor","location","setBuffer","arrayValue","size","length","_normalizeConstantArrayValue","enable","Buffer","disableVertexAttribArray","handle","vertexAttribPointer","vertexCount","instanceCount","func","_setConstantAttributes","valueAccessor","INVALID_RESULT","_getAttributeIndex","name","Number","isFinite","log","once","accessInfo","_getAttributeInfo","currentAccessor","Accessor","resolve","type","assert","attributeName","getAttributeInfo","multiLocation","exec","locationOffset","getAttributeLocation","isArray","ArrayBuffer","isView","constant","setConstant","Error","elementCount","Math","max","_setConstantAttributeZero","_setConstantAttribute","isSupported","constantAttributeZero","getConstantBuffer","isIndexed","isInstanced","indexCount","Infinity","_updateDrawParamsForLocation","getElementCount","indexType","indexOffset","offset","divisor","getVertexCount","min","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
+ {"version":3,"sources":["../../../src/classes/vertex-array.js"],"names":["ERR_ATTRIBUTE_TYPE","MULTI_LOCATION_ATTRIBUTE_REGEXP","DEPRECATIONS_V6","VertexArray","gl","opts","id","program","configuration","elements","elementsAccessor","values","accessors","unused","drawParams","buffer","attributes","vertexArrayObject","VertexArrayObject","initialize","Object","seal","delete","props","reset","bindOnUse","setProps","MAX_ATTRIBUTES","Array","fill","setAttributes","setElementBuffer","_updateDrawParams","assign","bind","locationOrName","value","_setAttribute","bindBuffer","elementBuffer","accessor","clearDrawParams","appAccessor","target","_resolveLocationAndAccessor","location","setBuffer","arrayValue","size","length","_normalizeConstantArrayValue","enable","Buffer","disableVertexAttribArray","handle","vertexAttribPointer","vertexCount","instanceCount","func","_setConstantAttributes","valueAccessor","INVALID_RESULT","_getAttributeIndex","name","Number","isFinite","log","once","accessInfo","_getAttributeInfo","currentAccessor","Accessor","resolve","type","attributeName","getAttributeInfo","multiLocation","exec","locationOffset","getAttributeLocation","isArray","ArrayBuffer","isView","constant","setConstant","Error","elementCount","Math","max","_setConstantAttributeZero","_setConstantAttribute","isSupported","constantAttributeZero","getConstantBuffer","isIndexed","isInstanced","indexCount","Infinity","_updateDrawParamsForLocation","getElementCount","indexType","indexOffset","offset","divisor","getVertexCount","min","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 +1 @@
1
- {"version":3,"file":"debug-program-configuration.js","names":["getDebugTableForProgramConfiguration","config","table","header","id","attributeInfos","attributeInfo","glslDeclaration","getGLSLDeclaration","JSON","stringify","accessor","varyingInfos","varyingInfo","type","size","typeAndName","getCompositeGLType","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;;;;;;;;AAEO,SAASA,oCAAT,CAA8CC,MAA9C,EAAsD;EAC3D,IAAMC,KAAK,GAAG,EAAd;EAEA,IAAMC,MAAM,2BAAoBF,MAAM,CAACG,EAA3B,CAAZ;;EAH2D,2CAK/BH,MAAM,CAACI,cALwB;EAAA;;EAAA;IAK3D,oDAAmD;MAAA,IAAxCC,aAAwC;;MACjD,IAAIA,aAAJ,EAAmB;QACjB,IAAMC,eAAe,GAAGC,kBAAkB,CAACF,aAAD,CAA1C;QACAJ,KAAK,cAAOK,eAAP,EAAL,qCAAmCJ,MAAnC,EAA4CM,IAAI,CAACC,SAAL,CAAeJ,aAAa,CAACK,QAA7B,CAA5C;MACD;IACF;EAV0D;IAAA;EAAA;IAAA;EAAA;;EAAA,4CAYjCV,MAAM,CAACW,YAZ0B;EAAA;;EAAA;IAY3D,uDAA+C;MAAA,IAApCC,WAAoC;;MAC7C,IAAIA,WAAJ,EAAiB;QACf,IAAMN,gBAAe,GAAGC,kBAAkB,CAACK,WAAD,CAA1C;;QACAX,KAAK,eAAQK,gBAAR,EAAL,qCAAoCJ,MAApC,EAA6CM,IAAI,CAACC,SAAL,CAAeG,WAAW,CAACF,QAA3B,CAA7C;MACD;IACF;EAjB0D;IAAA;EAAA;IAAA;EAAA;;EAmB3D,OAAOT,KAAP;AACD;;AAED,SAASM,kBAAT,CAA4BF,aAA5B,EAA2C;EACzC,4BAAqBA,aAAa,CAACK,QAAnC;EAAA,IAAOG,IAAP,yBAAOA,IAAP;EAAA,IAAaC,IAAb,yBAAaA,IAAb;EACA,IAAMC,WAAW,GAAG,IAAAC,kCAAA,EAAmBH,IAAnB,EAAyBC,IAAzB,CAApB;;EACA,IAAIC,WAAJ,EAAiB;IACf,iBAAUA,WAAW,CAACE,IAAtB,cAA8BZ,aAAa,CAACY,IAA5C;EACD;;EACD,OAAOZ,aAAa,CAACY,IAArB;AACD"}
1
+ {"version":3,"sources":["../../../src/debug/debug-program-configuration.js"],"names":["getDebugTableForProgramConfiguration","config","table","header","id","attributeInfos","attributeInfo","glslDeclaration","getGLSLDeclaration","JSON","stringify","accessor","varyingInfos","varyingInfo","type","size","typeAndName","name"],"mappings":";;;;;;;;;;;AAAA;;;;;;;;AAEO,SAASA,oCAAT,CAA8CC,MAA9C,EAAsD;AAC3D,MAAMC,KAAK,GAAG,EAAd;AAEA,MAAMC,MAAM,2BAAoBF,MAAM,CAACG,EAA3B,CAAZ;;AAH2D,6CAK/BH,MAAM,CAACI,cALwB;AAAA;;AAAA;AAK3D,wDAAmD;AAAA,UAAxCC,aAAwC;;AACjD,UAAIA,aAAJ,EAAmB;AACjB,YAAMC,eAAe,GAAGC,kBAAkB,CAACF,aAAD,CAA1C;AACAJ,QAAAA,KAAK,cAAOK,eAAP,EAAL,qCAAmCJ,MAAnC,EAA4CM,IAAI,CAACC,SAAL,CAAeJ,aAAa,CAACK,QAA7B,CAA5C;AACD;AACF;AAV0D;AAAA;AAAA;AAAA;AAAA;;AAAA,8CAYjCV,MAAM,CAACW,YAZ0B;AAAA;;AAAA;AAY3D,2DAA+C;AAAA,UAApCC,WAAoC;;AAC7C,UAAIA,WAAJ,EAAiB;AACf,YAAMN,gBAAe,GAAGC,kBAAkB,CAACK,WAAD,CAA1C;;AACAX,QAAAA,KAAK,eAAQK,gBAAR,EAAL,qCAAoCJ,MAApC,EAA6CM,IAAI,CAACC,SAAL,CAAeG,WAAW,CAACF,QAA3B,CAA7C;AACD;AACF;AAjB0D;AAAA;AAAA;AAAA;AAAA;;AAmB3D,SAAOT,KAAP;AACD;;AAED,SAASM,kBAAT,CAA4BF,aAA5B,EAA2C;AACzC,8BAAqBA,aAAa,CAACK,QAAnC;AAAA,MAAOG,IAAP,yBAAOA,IAAP;AAAA,MAAaC,IAAb,yBAAaA,IAAb;AACA,MAAMC,WAAW,GAAG,wCAAmBF,IAAnB,EAAyBC,IAAzB,CAApB;;AACA,MAAIC,WAAJ,EAAiB;AACf,qBAAUA,WAAW,CAACC,IAAtB,cAA8BX,aAAa,CAACW,IAA5C;AACD;;AACD,SAAOX,aAAa,CAACW,IAArB;AACD","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"],"file":"debug-program-configuration.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"debug-uniforms.js","names":["getDebugTableForUniforms","header","program","uniforms","undefinedOnly","assert","SHADER_MODULE_UNIFORM_REGEXP","PROJECT_MODULE_UNIFORM_REGEXP","uniformLocations","_uniformSetters","table","uniformNames","Object","keys","sort","count","uniformName","match","addUniformToTable","unusedCount","unusedTable","uniform","Type","formatValue","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;;AACA;;;;;;;;AAIO,SAASA,wBAAT,OAKJ;EAAA,uBAJDC,MAIC;EAAA,IAJDA,MAIC,4BAJQ,UAIR;EAAA,IAHDC,OAGC,QAHDA,OAGC;EAAA,IAFDC,QAEC,QAFDA,QAEC;EAAA,8BADDC,aACC;EAAA,IADDA,aACC,mCADe,KACf;EACD,IAAAC,cAAA,EAAOH,OAAP;EAEA,IAAMI,4BAA4B,GAAG,OAArC;EACA,IAAMC,6BAA6B,GAAG,UAAtC;EAEA,IAAMC,gBAAgB,GAAGN,OAAO,CAACO,eAAjC;EACA,IAAMC,KAAK,GAAG,EAAd;EAGA,IAAMC,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYL,gBAAZ,EAA8BM,IAA9B,EAArB;EAEA,IAAIC,KAAK,GAAG,CAAZ;;EAZC,2CAeyBJ,YAfzB;EAAA;;EAAA;IAeD,oDAAwC;MAAA,IAA7BK,YAA6B;;MACtC,IACE,CAACA,YAAW,CAACC,KAAZ,CAAkBX,4BAAlB,CAAD,IACA,CAACU,YAAW,CAACC,KAAZ,CAAkBV,6BAAlB,CAFH,EAGE;QACA,IAAIW,iBAAiB,CAAC;UAACR,KAAK,EAALA,KAAD;UAAQT,MAAM,EAANA,MAAR;UAAgBE,QAAQ,EAARA,QAAhB;UAA0Ba,WAAW,EAAXA,YAA1B;UAAuCZ,aAAa,EAAbA;QAAvC,CAAD,CAArB,EAA8E;UAC5EW,KAAK;QACN;MACF;IACF;EAxBA;IAAA;EAAA;IAAA;EAAA;;EAAA,4CA2ByBJ,YA3BzB;EAAA;;EAAA;IA2BD,uDAAwC;MAAA,IAA7BK,aAA6B;;MACtC,IAAIA,aAAW,CAACC,KAAZ,CAAkBV,6BAAlB,CAAJ,EAAsD;QACpD,IAAIW,iBAAiB,CAAC;UAACR,KAAK,EAALA,KAAD;UAAQT,MAAM,EAANA,MAAR;UAAgBE,QAAQ,EAARA,QAAhB;UAA0Ba,WAAW,EAAXA,aAA1B;UAAuCZ,aAAa,EAAbA;QAAvC,CAAD,CAArB,EAA8E;UAC5EW,KAAK;QACN;MACF;IACF;EAjCA;IAAA;EAAA;IAAA;EAAA;;EAAA,4CAmCyBJ,YAnCzB;EAAA;;EAAA;IAmCD,uDAAwC;MAAA,IAA7BK,aAA6B;;MACtC,IAAI,CAACN,KAAK,CAACM,aAAD,CAAV,EAAyB;QACvB,IAAIE,iBAAiB,CAAC;UAACR,KAAK,EAALA,KAAD;UAAQT,MAAM,EAANA,MAAR;UAAgBE,QAAQ,EAARA,QAAhB;UAA0Ba,WAAW,EAAXA,aAA1B;UAAuCZ,aAAa,EAAbA;QAAvC,CAAD,CAArB,EAA8E;UAC5EW,KAAK;QACN;MACF;IACF;EAzCA;IAAA;EAAA;IAAA;EAAA;;EA4CD,IAAII,WAAW,GAAG,CAAlB;EACA,IAAMC,WAAW,GAAG,EAApB;;EACA,IAAI,CAAChB,aAAL,EAAoB;IAClB,KAAK,IAAMY,WAAX,IAA0Bb,QAA1B,EAAoC;MAClC,IAAMkB,OAAO,GAAGlB,QAAQ,CAACa,WAAD,CAAxB;;MACA,IAAI,CAACN,KAAK,CAACM,WAAD,CAAV,EAAyB;QACvBG,WAAW;QACXC,WAAW,CAACJ,WAAD,CAAX;UACEM,IAAI,sBAAeD,OAAf;QADN,GAEGpB,MAFH,EAEY,IAAAsB,wBAAA,EAAYF,OAAZ,CAFZ;MAID;IACF;EACF;;EAED,OAAO;IAACX,KAAK,EAALA,KAAD;IAAQK,KAAK,EAALA,KAAR;IAAeK,WAAW,EAAXA,WAAf;IAA4BD,WAAW,EAAXA;EAA5B,CAAP;AACD;;AAGD,SAASD,iBAAT,QAAkF;EAAA,IAAtDR,KAAsD,SAAtDA,KAAsD;EAAA,IAA/CT,MAA+C,SAA/CA,MAA+C;EAAA,IAAvCE,QAAuC,SAAvCA,QAAuC;EAAA,IAA7Ba,WAA6B,SAA7BA,WAA6B;EAAA,IAAhBZ,aAAgB,SAAhBA,aAAgB;EAChF,IAAMoB,KAAK,GAAGrB,QAAQ,CAACa,WAAD,CAAtB;EACA,IAAMS,SAAS,GAAGC,gBAAgB,CAACF,KAAD,CAAlC;;EACA,IAAI,CAACpB,aAAD,IAAkB,CAACqB,SAAvB,EAAkC;IAAA;;IAChCf,KAAK,CAACM,WAAD,CAAL,+EAEGf,MAFH,EAEYwB,SAAS,GAAG,IAAAF,wBAAA,EAAYC,KAAZ,CAAH,GAAwB,KAF7C,qDAGE,cAHF,EAGkBC,SAAS,GAAGD,KAAH,GAAW,cAHtC;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"}
1
+ {"version":3,"sources":["../../../src/debug/debug-uniforms.js"],"names":["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"],"mappings":"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","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"],"file":"debug-uniforms.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"debug-vertex-array.js","names":["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","buffer","getDebugData","data","changed","byteLength","BYTES_PER_ELEMENT","format","instanced","divisor","getKey","formatValue","length","constructor","typeAndName","getCompositeGLType"],"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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"}
1
+ {"version":3,"sources":["../../../src/debug/debug-vertex-array.js"],"names":["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","buffer","getDebugData","data","changed","byteLength","BYTES_PER_ELEMENT","format","instanced","divisor","length","constructor","typeAndName"],"mappings":"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","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"],"file":"debug-vertex-array.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-glsl-extension.js","names":["compiledGlslExtensions","canCompileGLGSExtension","gl","cap","options","feature","WEBGL_FEATURES","assert","isOldIE","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;;AACA;;AACA;;AAMA,IAAMA,sBAAsB,GAAG,EAA/B;;AAGe,SAASC,uBAAT,CAAiCC,EAAjC,EAAqCC,GAArC,EAAwD;EAAA,IAAdC,OAAc,uEAAJ,EAAI;EACrE,IAAMC,OAAO,GAAGC,2BAAA,CAAeH,GAAf,CAAhB;EACA,IAAAI,cAAA,EAAOF,OAAP,EAAgBF,GAAhB;;EAEA,IAAI,CAAC,IAAAK,mBAAA,EAAQJ,OAAR,CAAL,EAAuB;IACrB,OAAO,IAAP;EACD;;EAED,IAAID,GAAG,IAAIH,sBAAX,EAAmC;IACjC,OAAOA,sBAAsB,CAACG,GAAD,CAA7B;EACD;;EAED,IAAMM,aAAa,GAAGJ,OAAO,CAAC,CAAD,CAA7B;EACA,IAAMK,MAAM,2BAAoBD,aAApB,kCAAZ;EAEA,IAAME,MAAM,GAAGT,EAAE,CAACU,YAAH,OAAf;EACAV,EAAE,CAACW,YAAH,CAAgBF,MAAhB,EAAwBD,MAAxB;EACAR,EAAE,CAACY,aAAH,CAAiBH,MAAjB;EACA,IAAMI,UAAU,GAAGb,EAAE,CAACc,kBAAH,CAAsBL,MAAtB,QAAnB;EACAT,EAAE,CAACe,YAAH,CAAgBN,MAAhB;EACAX,sBAAsB,CAACG,GAAD,CAAtB,GAA8BY,UAA9B;EACA,OAAOA,UAAP;AACD"}
1
+ {"version":3,"sources":["../../../src/features/check-glsl-extension.js"],"names":["compiledGlslExtensions","canCompileGLGSExtension","gl","cap","options","feature","WEBGL_FEATURES","extensionName","source","shader","createShader","shaderSource","compileShader","canCompile","getShaderParameter","deleteShader"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAMA,IAAMA,sBAAsB,GAAG,EAA/B;;AAGe,SAASC,uBAAT,CAAiCC,EAAjC,EAAqCC,GAArC,EAAwD;AAAA,MAAdC,OAAc,uEAAJ,EAAI;AACrE,MAAMC,OAAO,GAAGC,4BAAeH,GAAf,CAAhB;AACA,sBAAOE,OAAP,EAAgBF,GAAhB;;AAEA,MAAI,CAAC,yBAAQC,OAAR,CAAL,EAAuB;AACrB,WAAO,IAAP;AACD;;AAED,MAAID,GAAG,IAAIH,sBAAX,EAAmC;AACjC,WAAOA,sBAAsB,CAACG,GAAD,CAA7B;AACD;;AAED,MAAMI,aAAa,GAAGF,OAAO,CAAC,CAAD,CAA7B;AACA,MAAMG,MAAM,2BAAoBD,aAApB,kCAAZ;AAEA,MAAME,MAAM,GAAGP,EAAE,CAACQ,YAAH,OAAf;AACAR,EAAAA,EAAE,CAACS,YAAH,CAAgBF,MAAhB,EAAwBD,MAAxB;AACAN,EAAAA,EAAE,CAACU,aAAH,CAAiBH,MAAjB;AACA,MAAMI,UAAU,GAAGX,EAAE,CAACY,kBAAH,CAAsBL,MAAtB,QAAnB;AACAP,EAAAA,EAAE,CAACa,YAAH,CAAgBN,MAAhB;AACAT,EAAAA,sBAAsB,CAACG,GAAD,CAAtB,GAA8BU,UAA9B;AACA,SAAOA,UAAP;AACD","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"],"file":"check-glsl-extension.js"}
@@ -1 +1 @@
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":";;;;;;;AACe,SAASA,OAAT,GAA4B;EAAA,IAAXC,IAAW,uEAAJ,EAAI;EACzC,IAAMC,SAAS,GAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACD,SAAzC,IAAuD,EAAzE;EAEA,IAAME,SAAS,GAAGH,IAAI,CAACG,SAAL,IAAkBF,SAAS,CAACE,SAA5B,IAAyC,EAA3D;EAGA,IAAMC,MAAM,GAAGD,SAAS,CAACE,OAAV,CAAkB,OAAlB,MAA+B,CAAC,CAA/C;EACA,IAAMC,SAAS,GAAGH,SAAS,CAACE,OAAV,CAAkB,UAAlB,MAAkC,CAAC,CAArD;EACA,OAAOD,MAAM,IAAIE,SAAjB;AACD"}
1
+ {"version":3,"sources":["../../../src/features/check-old-ie.js"],"names":["isOldIE","opts","navigator","window","userAgent","isMSIE","indexOf","isTrident"],"mappings":";;;;;;;AACe,SAASA,OAAT,GAA4B;AAAA,MAAXC,IAAW,uEAAJ,EAAI;AACzC,MAAMC,SAAS,GAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACD,SAAzC,IAAuD,EAAzE;AAEA,MAAME,SAAS,GAAGH,IAAI,CAACG,SAAL,IAAkBF,SAAS,CAACE,SAA5B,IAAyC,EAA3D;AAGA,MAAMC,MAAM,GAAGD,SAAS,CAACE,OAAV,CAAkB,OAAlB,MAA+B,CAAC,CAA/C;AACA,MAAMC,SAAS,GAAGH,SAAS,CAACE,OAAV,CAAkB,UAAlB,MAAkC,CAAC,CAArD;AACA,SAAOD,MAAM,IAAIE,SAAjB;AACD","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"],"file":"check-old-ie.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"features.js","names":["LOG_UNSUPPORTED_FEATURE","hasFeature","gl","feature","hasFeatures","features","Array","isArray","every","isFeatureSupported","getFeatures","luma","caps","cap","WEBGL_FEATURES","undefined","queryFeature","log","assert","isSupported","featureDefinition","isWebGL2","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
+ {"version":3,"sources":["../../../src/features/features.js"],"names":["LOG_UNSUPPORTED_FEATURE","hasFeature","gl","feature","hasFeatures","features","Array","isArray","every","isFeatureSupported","getFeatures","luma","caps","cap","WEBGL_FEATURES","undefined","queryFeature","log","isSupported","featureDefinition","extension","Boolean","getExtension"],"mappings":"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","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"],"file":"features.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"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;;AACA;;AACA;;AAEA"}
1
+ {"version":3,"sources":["../../../src/features/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA","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"],"file":"index.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"limits.js","names":["getContextLimits","gl","luma","limits","webgl1MinLimits","webgl2MinLimits","isWebgl2","isWebGL2","parameter","WEBGL_LIMITS","limit","webgl1MinLimit","gl1","webgl2MinLimit","gl2","minLimit","limitNotAvailable","getExtension","extension","value","getParameter","getGLContextInfo","info","getContextDebugInfo","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;;AACA;;AAEO,SAASA,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,IAAMC,QAAQ,GAAG,IAAAC,iBAAA,EAASN,EAAT,CAAjB;;IAGA,KAAK,IAAMO,SAAX,IAAwBC,yBAAxB,EAAsC;MACpC,IAAMC,KAAK,GAAGD,yBAAA,CAAaD,SAAb,CAAd;MAEA,IAAMG,cAAc,GAAGD,KAAK,CAACE,GAA7B;MACA,IAAMC,cAAc,GAAG,SAASH,KAAT,GAAiBA,KAAK,CAACI,GAAvB,GAA6BJ,KAAK,CAACE,GAA1D;MACA,IAAMG,QAAQ,GAAGT,QAAQ,GAAGO,cAAH,GAAoBF,cAA7C;MAGA,IAAMK,iBAAiB,GACpB,SAASN,KAAT,IAAkB,CAACJ,QAApB,IAEC,eAAeI,KAAf,IAAwB,CAACT,EAAE,CAACgB,YAAH,CAAgBP,KAAK,CAACQ,SAAtB,CAH5B;MAKA,IAAMC,KAAK,GAAGH,iBAAiB,GAAGD,QAAH,GAAcd,EAAE,CAACmB,YAAH,CAAgBZ,SAAhB,CAA7C;MACAP,EAAE,CAACC,IAAH,CAAQC,MAAR,CAAeK,SAAf,IAA4BW,KAA5B;MACAlB,EAAE,CAACC,IAAH,CAAQE,eAAR,CAAwBI,SAAxB,IAAqCG,cAArC;MACAV,EAAE,CAACC,IAAH,CAAQG,eAAR,CAAwBG,SAAxB,IAAqCK,cAArC;IACD;EACF;;EAED,OAAOZ,EAAE,CAACC,IAAH,CAAQC,MAAf;AACD;;AAEM,SAASkB,gBAAT,CAA0BpB,EAA1B,EAA8B;EACnCA,EAAE,CAACC,IAAH,GAAUD,EAAE,CAACC,IAAH,IAAW,EAArB;EAEA,IAAMoB,IAAI,GAAG,IAAAC,4BAAA,EAAoBtB,EAApB,CAAb;;EACA,IAAI,CAACA,EAAE,CAACC,IAAH,CAAQoB,IAAb,EAAmB;IAAA;;IACjBrB,EAAE,CAACC,IAAH,CAAQoB,IAAR,4EAC8BA,IAAI,CAACE,MADnC,uDAEgCF,IAAI,CAACG,QAFrC,sDAGeH,IAAI,CAACI,YAHpB,sDAIiBJ,IAAI,CAACK,cAJtB,sDAKgBL,IAAI,CAACM,OALrB,uDAMiCN,IAAI,CAACO,sBANtC;EAQD;;EAED,OAAO5B,EAAE,CAACC,IAAH,CAAQoB,IAAf;AACD;;AAEM,SAASQ,cAAT,CAAwB7B,EAAxB,EAA4B;EACjC,OAAO8B,MAAM,CAACC,MAAP,CAAc,IAAAT,4BAAA,EAAoBtB,EAApB,CAAd,EAAuC;IAC5CE,MAAM,EAAEH,gBAAgB,CAACC,EAAD,CADoB;IAE5CqB,IAAI,EAAED,gBAAgB,CAACpB,EAAD,CAFsB;IAG5CG,eAAe,EAAEH,EAAE,CAACC,IAAH,CAAQE,eAHmB;IAI5CC,eAAe,EAAEJ,EAAE,CAACC,IAAH,CAAQG;EAJmB,CAAvC,CAAP;AAMD"}
1
+ {"version":3,"sources":["../../../src/features/limits.js"],"names":["getContextLimits","gl","luma","limits","webgl1MinLimits","webgl2MinLimits","isWebgl2","parameter","WEBGL_LIMITS","limit","webgl1MinLimit","gl1","webgl2MinLimit","gl2","minLimit","limitNotAvailable","getExtension","extension","value","getParameter","getGLContextInfo","info","vendor","renderer","vendorMasked","rendererMasked","version","shadingLanguageVersion","getContextInfo","Object","assign"],"mappings":";;;;;;;;;;;;;AAEA;;AACA;;AAEO,SAASA,gBAAT,CAA0BC,EAA1B,EAA8B;AACnCA,EAAAA,EAAE,CAACC,IAAH,GAAUD,EAAE,CAACC,IAAH,IAAW,EAArB;;AAEA,MAAI,CAACD,EAAE,CAACC,IAAH,CAAQC,MAAb,EAAqB;AACnBF,IAAAA,EAAE,CAACC,IAAH,CAAQC,MAAR,GAAiB,EAAjB;AACAF,IAAAA,EAAE,CAACC,IAAH,CAAQE,eAAR,GAA0B,EAA1B;AACAH,IAAAA,EAAE,CAACC,IAAH,CAAQG,eAAR,GAA0B,EAA1B;AAEA,QAAMC,QAAQ,GAAG,uBAASL,EAAT,CAAjB;;AAGA,SAAK,IAAMM,SAAX,IAAwBC,yBAAxB,EAAsC;AACpC,UAAMC,KAAK,GAAGD,0BAAaD,SAAb,CAAd;AAEA,UAAMG,cAAc,GAAGD,KAAK,CAACE,GAA7B;AACA,UAAMC,cAAc,GAAG,SAASH,KAAT,GAAiBA,KAAK,CAACI,GAAvB,GAA6BJ,KAAK,CAACE,GAA1D;AACA,UAAMG,QAAQ,GAAGR,QAAQ,GAAGM,cAAH,GAAoBF,cAA7C;AAGA,UAAMK,iBAAiB,GACpB,SAASN,KAAT,IAAkB,CAACH,QAApB,IAEC,eAAeG,KAAf,IAAwB,CAACR,EAAE,CAACe,YAAH,CAAgBP,KAAK,CAACQ,SAAtB,CAH5B;AAKA,UAAMC,KAAK,GAAGH,iBAAiB,GAAGD,QAAH,GAAcb,EAAE,CAACkB,YAAH,CAAgBZ,SAAhB,CAA7C;AACAN,MAAAA,EAAE,CAACC,IAAH,CAAQC,MAAR,CAAeI,SAAf,IAA4BW,KAA5B;AACAjB,MAAAA,EAAE,CAACC,IAAH,CAAQE,eAAR,CAAwBG,SAAxB,IAAqCG,cAArC;AACAT,MAAAA,EAAE,CAACC,IAAH,CAAQG,eAAR,CAAwBE,SAAxB,IAAqCK,cAArC;AACD;AACF;;AAED,SAAOX,EAAE,CAACC,IAAH,CAAQC,MAAf;AACD;;AAEM,SAASiB,gBAAT,CAA0BnB,EAA1B,EAA8B;AACnCA,EAAAA,EAAE,CAACC,IAAH,GAAUD,EAAE,CAACC,IAAH,IAAW,EAArB;AAEA,MAAMmB,IAAI,GAAG,kCAAoBpB,EAApB,CAAb;;AACA,MAAI,CAACA,EAAE,CAACC,IAAH,CAAQmB,IAAb,EAAmB;AAAA;;AACjBpB,IAAAA,EAAE,CAACC,IAAH,CAAQmB,IAAR,4EAC8BA,IAAI,CAACC,MADnC,uDAEgCD,IAAI,CAACE,QAFrC,sDAGeF,IAAI,CAACG,YAHpB,sDAIiBH,IAAI,CAACI,cAJtB,sDAKgBJ,IAAI,CAACK,OALrB,uDAMiCL,IAAI,CAACM,sBANtC;AAQD;;AAED,SAAO1B,EAAE,CAACC,IAAH,CAAQmB,IAAf;AACD;;AAEM,SAASO,cAAT,CAAwB3B,EAAxB,EAA4B;AACjC,SAAO4B,MAAM,CAACC,MAAP,CAAc,kCAAoB7B,EAApB,CAAd,EAAuC;AAC5CE,IAAAA,MAAM,EAAEH,gBAAgB,CAACC,EAAD,CADoB;AAE5CoB,IAAAA,IAAI,EAAED,gBAAgB,CAACnB,EAAD,CAFsB;AAG5CG,IAAAA,eAAe,EAAEH,EAAE,CAACC,IAAH,CAAQE,eAHmB;AAI5CC,IAAAA,eAAe,EAAEJ,EAAE,CAACC,IAAH,CAAQG;AAJmB,GAAvC,CAAP;AAMD","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"],"file":"limits.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-features-table.js","names":["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","Texture2D","format","type","dataFormat","testFb","Framebuffer","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
+ {"version":3,"sources":["../../../src/features/webgl-features-table.js"],"names":["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","Texture2D","format","type","dataFormat","testFb","Framebuffer","id","check","attachments","status","getStatus","delete"],"mappings":"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","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"],"file":"webgl-features-table.js"}
@@ -1 +1 @@
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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"}
1
+ {"version":3,"sources":["../../../src/features/webgl-limits-table.js"],"names":["gl1","Float32Array","gl2","Int32Array","negative"],"mappings":";;;;;;;;;;;;;wFAGiC;AAACA,EAAAA,GAAG,EAAE,IAAIC,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,CAAjB;AAAN,C,uDACA;AAACD,EAAAA,GAAG,EAAE,IAAIC,YAAJ,CAAiB,CAAC,CAAD,EAAI,CAAJ,CAAjB;AAAN,C,sDACR;AAACD,EAAAA,GAAG,EAAE,EAAN;AAAUE,EAAAA,GAAG,EAAE;AAAf,C,uDACS;AAACF,EAAAA,GAAG,EAAE;AAAN,C,uDACF;AAACA,EAAAA,GAAG,EAAE;AAAN,C,uDACS;AAACA,EAAAA,GAAG,EAAE;AAAN,C,uDACF;AAACA,EAAAA,GAAG,EAAE;AAAN,C,uDACT;AAACA,EAAAA,GAAG,EAAE;AAAN,C,uDACF;AAACA,EAAAA,GAAG,EAAE;AAAN,C,uDACD;AAACA,EAAAA,GAAG,EAAE;AAAN,C,uDACQ;AAACA,EAAAA,GAAG,EAAE;AAAN,C,uDACE;AAACA,EAAAA,GAAG,EAAE;AAAN,C,sDACX;AAACA,EAAAA,GAAG,EAAE,IAAIG,UAAJ,CAAe,CAAC,CAAD,EAAI,CAAJ,CAAf;AAAN,C,uDAME;AAACH,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACK;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACK;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACR;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACmB;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACb;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACW;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACtB;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACC;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACG;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACC;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACQ;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACF;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACI;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACpB;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACY;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACH;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACyB;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACN;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACG;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACpB;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACK;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACL;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACM;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACH;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACI;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACL;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE,CAAC,CAAf;AAAkBE,EAAAA,QAAQ,EAAE;AAA5B,C,uDACA;AAACJ,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C,uDACO;AAACF,EAAAA,GAAG,EAAE,CAAN;AAASE,EAAAA,GAAG,EAAE;AAAd,C","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"],"file":"webgl-limits-table.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"format-glsl-error.js","names":["formatGLSLCompilerError","errLog","src","shaderType","parseGLSLCompilerError","shaderName","errors","warnings","errorStrings","split","name","getShaderName","shaderDescription","getShaderTypeName","i","length","errorString","segments","type","line","parseInt","isNaN","Error","lines","addLineNumbers","formatErrors","message","error","column","err","substring","join","trim","padLeft","string","start","delim","maxDigits","String","map","lineNumber","digits","prefix","result"],"sources":["../../../src/glsl-utils/format-glsl-error.js"],"sourcesContent":["// TODO - formatGLSLCompilerError should not depend on this\nimport getShaderName from './get-shader-name';\nimport getShaderTypeName from './get-shader-type-name';\n\n// Formats GLSL compiler error log into single string\nexport default function formatGLSLCompilerError(errLog, src, shaderType) {\n const {shaderName, errors, warnings} = parseGLSLCompilerError(errLog, src, shaderType);\n return `GLSL compilation error in ${shaderName}\\n\\n${errors}\\n${warnings}`;\n}\n\n/**\n * Parse a GLSL compiler error log into a string showing the source code around each error.\n * Based on https://github.com/wwwtyro/gl-format-compiler-error (public domain)\n */\n/* eslint-disable no-continue, max-statements */\nexport function parseGLSLCompilerError(errLog, src, shaderType, shaderName) {\n const errorStrings = errLog.split(/\\r?\\n/);\n const errors = {};\n const warnings = {};\n\n // Patch the shader name\n const name = shaderName || getShaderName(src) || '(unnamed)';\n const shaderDescription = `${getShaderTypeName(shaderType)} shader ${name}`;\n\n // Parse the error - note: browser and driver dependent\n for (let i = 0; i < errorStrings.length; i++) {\n const errorString = errorStrings[i];\n if (errorString.length <= 1) {\n continue;\n }\n const segments = errorString.split(':');\n const type = segments[0];\n const line = parseInt(segments[2], 10);\n if (isNaN(line)) {\n throw new Error(`GLSL compilation error in ${shaderDescription}: ${errLog}`);\n }\n if (type !== 'WARNING') {\n errors[line] = errorString;\n } else {\n warnings[line] = errorString;\n }\n }\n\n // Format the error inline with the code\n const lines = addLineNumbers(src);\n\n return {\n shaderName: shaderDescription,\n errors: formatErrors(errors, lines),\n warnings: formatErrors(warnings, lines)\n };\n}\n\n// helper function, outputs annotated errors or warnings\nfunction formatErrors(errors, lines) {\n let message = '';\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!errors[i + 3] && !errors[i + 2] && !errors[i + 1]) {\n continue;\n }\n message += `${line}\\n`;\n if (errors[i + 1]) {\n const error = errors[i + 1];\n const segments = error.split(':', 3);\n const type = segments[0];\n const column = parseInt(segments[1], 10) || 0;\n const err = error.substring(segments.join(':').length + 1).trim();\n message += padLeft(`^^^ ${type}: ${err}\\n\\n`, column);\n }\n }\n return message;\n}\n\n/**\n * Prepends line numbers to each line of a string.\n * The line numbers will be left-padded with spaces to ensure an\n * aligned layout when rendered using monospace fonts.\n * @param {String} string - multi-line string to add line numbers to\n * @param {Number} start=1 - number of spaces to add\n * @param {String} delim =': ' - injected between line number and original line\n * @return {String[]} strings - array of string, one per line, with line numbers added\n */\nfunction addLineNumbers(string, start = 1, delim = ': ') {\n const lines = string.split(/\\r?\\n/);\n const maxDigits = String(lines.length + start - 1).length;\n return lines.map((line, i) => {\n const lineNumber = String(i + start);\n const digits = lineNumber.length;\n const prefix = padLeft(lineNumber, maxDigits - digits);\n return prefix + delim + line;\n });\n}\n\n/**\n * Pads a string with a number of spaces (space characters) to the left\n * @param {String} string - string to pad\n * @param {Number} digits - number of spaces to add\n * @return {String} string - The padded string\n */\nfunction padLeft(string, digits) {\n let result = '';\n for (let i = 0; i < digits; ++i) {\n result += ' ';\n }\n return `${result}${string}`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/glsl-utils/format-glsl-error.js"],"names":["formatGLSLCompilerError","errLog","src","shaderType","parseGLSLCompilerError","shaderName","errors","warnings","errorStrings","split","name","shaderDescription","i","length","errorString","segments","type","line","parseInt","isNaN","Error","lines","addLineNumbers","formatErrors","message","error","column","err","substring","join","trim","padLeft","string","start","delim","maxDigits","String","map","lineNumber","digits","prefix","result"],"mappings":"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","sourcesContent":["// TODO - formatGLSLCompilerError should not depend on this\nimport getShaderName from './get-shader-name';\nimport getShaderTypeName from './get-shader-type-name';\n\n// Formats GLSL compiler error log into single string\nexport default function formatGLSLCompilerError(errLog, src, shaderType) {\n const {shaderName, errors, warnings} = parseGLSLCompilerError(errLog, src, shaderType);\n return `GLSL compilation error in ${shaderName}\\n\\n${errors}\\n${warnings}`;\n}\n\n/**\n * Parse a GLSL compiler error log into a string showing the source code around each error.\n * Based on https://github.com/wwwtyro/gl-format-compiler-error (public domain)\n */\n/* eslint-disable no-continue, max-statements */\nexport function parseGLSLCompilerError(errLog, src, shaderType, shaderName) {\n const errorStrings = errLog.split(/\\r?\\n/);\n const errors = {};\n const warnings = {};\n\n // Patch the shader name\n const name = shaderName || getShaderName(src) || '(unnamed)';\n const shaderDescription = `${getShaderTypeName(shaderType)} shader ${name}`;\n\n // Parse the error - note: browser and driver dependent\n for (let i = 0; i < errorStrings.length; i++) {\n const errorString = errorStrings[i];\n if (errorString.length <= 1) {\n continue;\n }\n const segments = errorString.split(':');\n const type = segments[0];\n const line = parseInt(segments[2], 10);\n if (isNaN(line)) {\n throw new Error(`GLSL compilation error in ${shaderDescription}: ${errLog}`);\n }\n if (type !== 'WARNING') {\n errors[line] = errorString;\n } else {\n warnings[line] = errorString;\n }\n }\n\n // Format the error inline with the code\n const lines = addLineNumbers(src);\n\n return {\n shaderName: shaderDescription,\n errors: formatErrors(errors, lines),\n warnings: formatErrors(warnings, lines)\n };\n}\n\n// helper function, outputs annotated errors or warnings\nfunction formatErrors(errors, lines) {\n let message = '';\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!errors[i + 3] && !errors[i + 2] && !errors[i + 1]) {\n continue;\n }\n message += `${line}\\n`;\n if (errors[i + 1]) {\n const error = errors[i + 1];\n const segments = error.split(':', 3);\n const type = segments[0];\n const column = parseInt(segments[1], 10) || 0;\n const err = error.substring(segments.join(':').length + 1).trim();\n message += padLeft(`^^^ ${type}: ${err}\\n\\n`, column);\n }\n }\n return message;\n}\n\n/**\n * Prepends line numbers to each line of a string.\n * The line numbers will be left-padded with spaces to ensure an\n * aligned layout when rendered using monospace fonts.\n * @param {String} string - multi-line string to add line numbers to\n * @param {Number} start=1 - number of spaces to add\n * @param {String} delim =': ' - injected between line number and original line\n * @return {String[]} strings - array of string, one per line, with line numbers added\n */\nfunction addLineNumbers(string, start = 1, delim = ': ') {\n const lines = string.split(/\\r?\\n/);\n const maxDigits = String(lines.length + start - 1).length;\n return lines.map((line, i) => {\n const lineNumber = String(i + start);\n const digits = lineNumber.length;\n const prefix = padLeft(lineNumber, maxDigits - digits);\n return prefix + delim + line;\n });\n}\n\n/**\n * Pads a string with a number of spaces (space characters) to the left\n * @param {String} string - string to pad\n * @param {Number} digits - number of spaces to add\n * @return {String} string - The padded string\n */\nfunction padLeft(string, digits) {\n let result = '';\n for (let i = 0; i < digits; ++i) {\n result += ' ';\n }\n return `${result}${string}`;\n}\n"],"file":"format-glsl-error.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-shader-name.js","names":["getShaderName","shader","defaultName","SHADER_NAME_REGEXP","match"],"sources":["../../../src/glsl-utils/get-shader-name.js"],"sourcesContent":["// Supports GLSLIFY style naming of shaders\n// #define SHADER_NAME ...\nexport default function getShaderName(shader, defaultName = 'unnamed') {\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = shader.match(SHADER_NAME_REGEXP);\n return match ? match[1] : defaultName;\n}\n"],"mappings":";;;;;;;AAEe,SAASA,aAAT,CAAuBC,MAAvB,EAAwD;EAAA,IAAzBC,WAAyB,uEAAX,SAAW;EACrE,IAAMC,kBAAkB,GAAG,mDAA3B;EACA,IAAMC,KAAK,GAAGH,MAAM,CAACG,KAAP,CAAaD,kBAAb,CAAd;EACA,OAAOC,KAAK,GAAGA,KAAK,CAAC,CAAD,CAAR,GAAcF,WAA1B;AACD"}
1
+ {"version":3,"sources":["../../../src/glsl-utils/get-shader-name.js"],"names":["getShaderName","shader","defaultName","SHADER_NAME_REGEXP","match"],"mappings":";;;;;;;AAEe,SAASA,aAAT,CAAuBC,MAAvB,EAAwD;AAAA,MAAzBC,WAAyB,uEAAX,SAAW;AACrE,MAAMC,kBAAkB,GAAG,mDAA3B;AACA,MAAMC,KAAK,GAAGH,MAAM,CAACG,KAAP,CAAaD,kBAAb,CAAd;AACA,SAAOC,KAAK,GAAGA,KAAK,CAAC,CAAD,CAAR,GAAcF,WAA1B;AACD","sourcesContent":["// Supports GLSLIFY style naming of shaders\n// #define SHADER_NAME ...\nexport default function getShaderName(shader, defaultName = 'unnamed') {\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = shader.match(SHADER_NAME_REGEXP);\n return match ? match[1] : defaultName;\n}\n"],"file":"get-shader-name.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-shader-type-name.js","names":["GL_FRAGMENT_SHADER","GL_VERTEX_SHADER","getShaderTypeName","type"],"sources":["../../../src/glsl-utils/get-shader-type-name.js"],"sourcesContent":["const GL_FRAGMENT_SHADER = 0x8b30;\nconst GL_VERTEX_SHADER = 0x8b31;\n\nexport default function getShaderTypeName(type) {\n switch (type) {\n case GL_FRAGMENT_SHADER:\n return 'fragment';\n case GL_VERTEX_SHADER:\n return 'vertex';\n default:\n return 'unknown type';\n }\n}\n"],"mappings":";;;;;;AAAA,IAAMA,kBAAkB,GAAG,MAA3B;AACA,IAAMC,gBAAgB,GAAG,MAAzB;;AAEe,SAASC,iBAAT,CAA2BC,IAA3B,EAAiC;EAC9C,QAAQA,IAAR;IACE,KAAKH,kBAAL;MACE,OAAO,UAAP;;IACF,KAAKC,gBAAL;MACE,OAAO,QAAP;;IACF;MACE,OAAO,cAAP;EANJ;AAQD"}
1
+ {"version":3,"sources":["../../../src/glsl-utils/get-shader-type-name.js"],"names":["GL_FRAGMENT_SHADER","GL_VERTEX_SHADER","getShaderTypeName","type"],"mappings":";;;;;;AAAA,IAAMA,kBAAkB,GAAG,MAA3B;AACA,IAAMC,gBAAgB,GAAG,MAAzB;;AAEe,SAASC,iBAAT,CAA2BC,IAA3B,EAAiC;AAC9C,UAAQA,IAAR;AACE,SAAKH,kBAAL;AACE,aAAO,UAAP;;AACF,SAAKC,gBAAL;AACE,aAAO,QAAP;;AACF;AACE,aAAO,cAAP;AANJ;AAQD","sourcesContent":["const GL_FRAGMENT_SHADER = 0x8b30;\nconst GL_VERTEX_SHADER = 0x8b31;\n\nexport default function getShaderTypeName(type) {\n switch (type) {\n case GL_FRAGMENT_SHADER:\n return 'fragment';\n case GL_VERTEX_SHADER:\n return 'vertex';\n default:\n return 'unknown type';\n }\n}\n"],"file":"get-shader-type-name.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-shader-version.js","names":["getShaderVersion","source","version","words","match","length","v","parseInt","Number","isFinite"],"sources":["../../../src/glsl-utils/get-shader-version.js"],"sourcesContent":["// returns GLSL shader version of given shader string\nexport default function getShaderVersion(source) {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n if (words.length >= 2 && words[0] === '#version') {\n const v = parseInt(words[1], 10);\n if (Number.isFinite(v)) {\n version = v;\n }\n }\n return version;\n}\n"],"mappings":";;;;;;;AACe,SAASA,gBAAT,CAA0BC,MAA1B,EAAkC;EAC/C,IAAIC,OAAO,GAAG,GAAd;EACA,IAAMC,KAAK,GAAGF,MAAM,CAACG,KAAP,CAAa,SAAb,CAAd;;EACA,IAAID,KAAK,CAACE,MAAN,IAAgB,CAAhB,IAAqBF,KAAK,CAAC,CAAD,CAAL,KAAa,UAAtC,EAAkD;IAChD,IAAMG,CAAC,GAAGC,QAAQ,CAACJ,KAAK,CAAC,CAAD,CAAN,EAAW,EAAX,CAAlB;;IACA,IAAIK,MAAM,CAACC,QAAP,CAAgBH,CAAhB,CAAJ,EAAwB;MACtBJ,OAAO,GAAGI,CAAV;IACD;EACF;;EACD,OAAOJ,OAAP;AACD"}
1
+ {"version":3,"sources":["../../../src/glsl-utils/get-shader-version.js"],"names":["getShaderVersion","source","version","words","match","length","v","parseInt","Number","isFinite"],"mappings":";;;;;;;AACe,SAASA,gBAAT,CAA0BC,MAA1B,EAAkC;AAC/C,MAAIC,OAAO,GAAG,GAAd;AACA,MAAMC,KAAK,GAAGF,MAAM,CAACG,KAAP,CAAa,SAAb,CAAd;;AACA,MAAID,KAAK,CAACE,MAAN,IAAgB,CAAhB,IAAqBF,KAAK,CAAC,CAAD,CAAL,KAAa,UAAtC,EAAkD;AAChD,QAAMG,CAAC,GAAGC,QAAQ,CAACJ,KAAK,CAAC,CAAD,CAAN,EAAW,EAAX,CAAlB;;AACA,QAAIK,MAAM,CAACC,QAAP,CAAgBH,CAAhB,CAAJ,EAAwB;AACtBJ,MAAAA,OAAO,GAAGI,CAAV;AACD;AACF;;AACD,SAAOJ,OAAP;AACD","sourcesContent":["// returns GLSL shader version of given shader string\nexport default function getShaderVersion(source) {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n if (words.length >= 2 && words[0] === '#version') {\n const v = parseInt(words[1], 10);\n if (Number.isFinite(v)) {\n version = v;\n }\n }\n return version;\n}\n"],"file":"get-shader-version.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/glsl-utils/index.js"],"sourcesContent":["// PARSE SHADER ERRORS\nexport {default as formatGLSLCompilerError, parseGLSLCompilerError} from './format-glsl-error';\n\n// PARSE SHADER SOURCE\nexport {default as getShaderName} from './get-shader-name';\nexport {default as getShaderVersion} from './get-shader-version';\n\nexport {default as getShaderTypeName} from './get-shader-type-name';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAGA;;AACA;;AAEA"}
1
+ {"version":3,"sources":["../../../src/glsl-utils/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAGA;;AACA;;AAEA","sourcesContent":["// PARSE SHADER ERRORS\nexport {default as formatGLSLCompilerError, parseGLSLCompilerError} from './format-glsl-error';\n\n// PARSE SHADER SOURCE\nexport {default as getShaderName} from './get-shader-name';\nexport {default as getShaderVersion} from './get-shader-version';\n\nexport {default as getShaderTypeName} from './get-shader-type-name';\n"],"file":"index.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.js"],"sourcesContent":["// luma.gl Base WebGL wrapper library\n// Provides simple class/function wrappers around the low level webgl objects\n// These classes are intentionally close to the WebGL API\n// but make it easier to use.\n// Higher level abstractions can be built on these classes\n\n// Initialize any global state\nexport {lumaStats} from './init';\n\n// UTILS\nexport {requestAnimationFrame, cancelAnimationFrame} from './webgl-utils/request-animation-frame';\n\n// WebGL Functions\nexport {cloneTextureFrom} from './webgl-utils/texture-utils';\nexport {getKeyValue, getKey} from './webgl-utils/constants-to-keys';\nexport {getContextInfo, getGLContextInfo, getContextLimits} from './features/limits';\nexport {FEATURES} from './features/webgl-features-table';\nexport {hasFeature, hasFeatures, getFeatures} from './features/features';\nexport {default as canCompileGLGSExtension} from './features/check-glsl-extension';\n\n// WebGL Helper Classes\nexport {default as Accessor} from './classes/accessor';\n\n// WebGL1 classes\nexport {default as Buffer} from './classes/buffer';\nexport {Shader, VertexShader, FragmentShader} from './classes/shader';\nexport {default as Program} from './classes/program';\nexport {default as Framebuffer} from './classes/framebuffer';\nexport {default as Renderbuffer} from './classes/renderbuffer';\nexport {default as Texture2D} from './classes/texture-2d';\nexport {default as TextureCube} from './classes/texture-cube';\n\nexport {clear, clearBuffer} from './classes/clear';\n\n// Copy and Blit\nexport {\n readPixelsToArray,\n readPixelsToBuffer,\n copyToDataUrl,\n copyToImage,\n copyToTexture,\n blit\n} from './classes/copy-and-blit';\n\n// WebGL2 classes & Extensions\nexport {default as Query} from './classes/query';\nexport {default as Texture3D} from './classes/texture-3d';\nexport {default as TransformFeedback} from './classes/transform-feedback';\nexport {default as VertexArrayObject} from './classes/vertex-array-object';\nexport {default as VertexArray} from './classes/vertex-array';\nexport {default as UniformBufferLayout} from './classes/uniform-buffer-layout';\n\n// experimental WebGL exports\n\nexport {setPathPrefix, loadFile, loadImage} from './utils/load-file';\n\n// PARSE SHADER SOURCE\nexport {default as getShaderName} from './glsl-utils/get-shader-name';\nexport {default as getShaderVersion} from './glsl-utils/get-shader-version';\n\n// UTILS\nexport {log} from '@luma.gl/gltools';\nexport {assert} from './utils/assert';\nexport {uid, isObjectEmpty} from './utils/utils';\n\n// INTERNAL\nexport {parseUniformName, getUniformSetter} from './classes/uniforms';\nexport {getDebugTableForUniforms} from './debug/debug-uniforms';\nexport {getDebugTableForVertexArray} from './debug/debug-vertex-array';\nexport {getDebugTableForProgramConfiguration} from './debug/debug-program-configuration';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA;;AAGA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAGA;;AAUA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AAGA;;AACA;;AAGA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA"}
1
+ {"version":3,"sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA;;AAGA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAGA;;AAUA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AAGA;;AACA;;AAGA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA","sourcesContent":["// luma.gl Base WebGL wrapper library\n// Provides simple class/function wrappers around the low level webgl objects\n// These classes are intentionally close to the WebGL API\n// but make it easier to use.\n// Higher level abstractions can be built on these classes\n\n// Initialize any global state\nexport {lumaStats} from './init';\n\n// UTILS\nexport {requestAnimationFrame, cancelAnimationFrame} from './webgl-utils/request-animation-frame';\n\n// WebGL Functions\nexport {cloneTextureFrom} from './webgl-utils/texture-utils';\nexport {getKeyValue, getKey} from './webgl-utils/constants-to-keys';\nexport {getContextInfo, getGLContextInfo, getContextLimits} from './features/limits';\nexport {FEATURES} from './features/webgl-features-table';\nexport {hasFeature, hasFeatures, getFeatures} from './features/features';\nexport {default as canCompileGLGSExtension} from './features/check-glsl-extension';\n\n// WebGL Helper Classes\nexport {default as Accessor} from './classes/accessor';\n\n// WebGL1 classes\nexport {default as Buffer} from './classes/buffer';\nexport {Shader, VertexShader, FragmentShader} from './classes/shader';\nexport {default as Program} from './classes/program';\nexport {default as Framebuffer} from './classes/framebuffer';\nexport {default as Renderbuffer} from './classes/renderbuffer';\nexport {default as Texture2D} from './classes/texture-2d';\nexport {default as TextureCube} from './classes/texture-cube';\n\nexport {clear, clearBuffer} from './classes/clear';\n\n// Copy and Blit\nexport {\n readPixelsToArray,\n readPixelsToBuffer,\n copyToDataUrl,\n copyToImage,\n copyToTexture,\n blit\n} from './classes/copy-and-blit';\n\n// WebGL2 classes & Extensions\nexport {default as Query} from './classes/query';\nexport {default as Texture3D} from './classes/texture-3d';\nexport {default as TransformFeedback} from './classes/transform-feedback';\nexport {default as VertexArrayObject} from './classes/vertex-array-object';\nexport {default as VertexArray} from './classes/vertex-array';\nexport {default as UniformBufferLayout} from './classes/uniform-buffer-layout';\n\n// experimental WebGL exports\n\nexport {setPathPrefix, loadFile, loadImage} from './utils/load-file';\n\n// PARSE SHADER SOURCE\nexport {default as getShaderName} from './glsl-utils/get-shader-name';\nexport {default as getShaderVersion} from './glsl-utils/get-shader-version';\n\n// UTILS\nexport {log} from '@luma.gl/gltools';\nexport {assert} from './utils/assert';\nexport {uid, isObjectEmpty} from './utils/utils';\n\n// INTERNAL\nexport {parseUniformName, getUniformSetter} from './classes/uniforms';\nexport {getDebugTableForUniforms} from './debug/debug-uniforms';\nexport {getDebugTableForVertexArray} from './debug/debug-vertex-array';\nexport {getDebugTableForProgramConfiguration} from './debug/debug-program-configuration';\n"],"file":"index.js"}
package/dist/es5/init.js CHANGED
@@ -17,7 +17,7 @@ var _stats = require("@probe.gl/stats");
17
17
 
18
18
  var _env = require("@probe.gl/env");
19
19
 
20
- var VERSION = typeof "8.5.16" !== 'undefined' ? "8.5.16" : 'untranspiled source';
20
+ var VERSION = typeof "8.5.18" !== 'undefined' ? "8.5.18" : 'untranspiled source';
21
21
  var STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';
22
22
 
23
23
  var StatsManager = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","names":["VERSION","STARTUP_MESSAGE","StatsManager","stats","Map","name","has","set","Stats","id","get","lumaStats","globalThis","luma","Error","isBrowser","log","version","globals","modules","nodeIO"],"sources":["../../src/init.js"],"sourcesContent":["import {log} from '@luma.gl/gltools';\nimport {Stats} from '@probe.gl/stats';\nimport {isBrowser} from '@probe.gl/env';\n\n// Version detection using babel plugin\n/* global __VERSION__ */\n// @ts-ignore\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\n// Assign luma.log.level in console to control logging: \\\n// 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs\n// luma.log.break[], set to gl funcs, luma.log.profile[] set to model names`;\n\nexport class StatsManager {\n constructor() {\n this.stats = new Map();\n }\n\n get(name) {\n if (!this.stats.has(name)) {\n this.stats.set(name, new Stats({id: name}));\n }\n\n return this.stats.get(name);\n }\n}\n\nconst lumaStats = new StatsManager();\n\nif (globalThis.luma && globalThis.luma.VERSION !== VERSION) {\n throw new Error(`luma.gl - multiple VERSIONs detected: ${globalThis.luma.VERSION} vs ${VERSION}`);\n}\n\nif (!globalThis.luma) {\n if (isBrowser()) {\n log.log(1, `luma.gl ${VERSION} - ${STARTUP_MESSAGE}`)();\n }\n\n globalThis.luma = globalThis.luma || {\n VERSION,\n version: VERSION,\n log,\n\n // A global stats object that various components can add information to\n // E.g. see webgl/resource.js\n stats: lumaStats,\n\n // Keep some luma globals in a sub-object\n // This allows us to dynamically detect if certain modules have been\n // included (such as IO and headless) and enable related functionality,\n // without unconditionally requiring and thus bundling big dependencies\n // into the app.\n globals: {\n modules: {},\n nodeIO: {}\n }\n };\n}\n\nexport {lumaStats};\nexport default globalThis.luma;\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAKA,IAAMA,OAAO,GAAG,oBAAuB,WAAvB,cAAmD,qBAAnE;AAEA,IAAMC,eAAe,GAAG,qDAAxB;;IAKaC,Y;EACX,wBAAc;IAAA;IACZ,KAAKC,KAAL,GAAa,IAAIC,GAAJ,EAAb;EACD;;;;WAED,aAAIC,IAAJ,EAAU;MACR,IAAI,CAAC,KAAKF,KAAL,CAAWG,GAAX,CAAeD,IAAf,CAAL,EAA2B;QACzB,KAAKF,KAAL,CAAWI,GAAX,CAAeF,IAAf,EAAqB,IAAIG,YAAJ,CAAU;UAACC,EAAE,EAAEJ;QAAL,CAAV,CAArB;MACD;;MAED,OAAO,KAAKF,KAAL,CAAWO,GAAX,CAAeL,IAAf,CAAP;IACD;;;;;;AAGH,IAAMM,SAAS,GAAG,IAAIT,YAAJ,EAAlB;;;AAEA,IAAIU,UAAU,CAACC,IAAX,IAAmBD,UAAU,CAACC,IAAX,CAAgBb,OAAhB,KAA4BA,OAAnD,EAA4D;EAC1D,MAAM,IAAIc,KAAJ,iDAAmDF,UAAU,CAACC,IAAX,CAAgBb,OAAnE,iBAAiFA,OAAjF,EAAN;AACD;;AAED,IAAI,CAACY,UAAU,CAACC,IAAhB,EAAsB;EACpB,IAAI,IAAAE,cAAA,GAAJ,EAAiB;IACfC,YAAA,CAAIA,GAAJ,CAAQ,CAAR,oBAAsBhB,OAAtB,gBAAmCC,eAAnC;EACD;;EAEDW,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB;IACnCb,OAAO,EAAPA,OADmC;IAEnCiB,OAAO,EAAEjB,OAF0B;IAGnCgB,GAAG,EAAHA,YAHmC;IAOnCb,KAAK,EAAEQ,SAP4B;IAcnCO,OAAO,EAAE;MACPC,OAAO,EAAE,EADF;MAEPC,MAAM,EAAE;IAFD;EAd0B,CAArC;AAmBD;;eAGcR,UAAU,CAACC,I"}
1
+ {"version":3,"sources":["../../src/init.js"],"names":["VERSION","STARTUP_MESSAGE","StatsManager","stats","Map","name","has","set","Stats","id","get","lumaStats","globalThis","luma","Error","log","version","globals","modules","nodeIO"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAKA,IAAMA,OAAO,GAAG,oBAAuB,WAAvB,cAAmD,qBAAnE;AAEA,IAAMC,eAAe,GAAG,qDAAxB;;IAKaC,Y;AACX,0BAAc;AAAA;AACZ,SAAKC,KAAL,GAAa,IAAIC,GAAJ,EAAb;AACD;;;;WAED,aAAIC,IAAJ,EAAU;AACR,UAAI,CAAC,KAAKF,KAAL,CAAWG,GAAX,CAAeD,IAAf,CAAL,EAA2B;AACzB,aAAKF,KAAL,CAAWI,GAAX,CAAeF,IAAf,EAAqB,IAAIG,YAAJ,CAAU;AAACC,UAAAA,EAAE,EAAEJ;AAAL,SAAV,CAArB;AACD;;AAED,aAAO,KAAKF,KAAL,CAAWO,GAAX,CAAeL,IAAf,CAAP;AACD;;;;;;AAGH,IAAMM,SAAS,GAAG,IAAIT,YAAJ,EAAlB;;;AAEA,IAAIU,UAAU,CAACC,IAAX,IAAmBD,UAAU,CAACC,IAAX,CAAgBb,OAAhB,KAA4BA,OAAnD,EAA4D;AAC1D,QAAM,IAAIc,KAAJ,iDAAmDF,UAAU,CAACC,IAAX,CAAgBb,OAAnE,iBAAiFA,OAAjF,EAAN;AACD;;AAED,IAAI,CAACY,UAAU,CAACC,IAAhB,EAAsB;AACpB,MAAI,qBAAJ,EAAiB;AACfE,iBAAIA,GAAJ,CAAQ,CAAR,oBAAsBf,OAAtB,gBAAmCC,eAAnC;AACD;;AAEDW,EAAAA,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB;AACnCb,IAAAA,OAAO,EAAPA,OADmC;AAEnCgB,IAAAA,OAAO,EAAEhB,OAF0B;AAGnCe,IAAAA,GAAG,EAAHA,YAHmC;AAOnCZ,IAAAA,KAAK,EAAEQ,SAP4B;AAcnCM,IAAAA,OAAO,EAAE;AACPC,MAAAA,OAAO,EAAE,EADF;AAEPC,MAAAA,MAAM,EAAE;AAFD;AAd0B,GAArC;AAmBD;;eAGcP,UAAU,CAACC,I","sourcesContent":["import {log} from '@luma.gl/gltools';\nimport {Stats} from '@probe.gl/stats';\nimport {isBrowser} from '@probe.gl/env';\n\n// Version detection using babel plugin\n/* global __VERSION__ */\n// @ts-ignore\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\n// Assign luma.log.level in console to control logging: \\\n// 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs\n// luma.log.break[], set to gl funcs, luma.log.profile[] set to model names`;\n\nexport class StatsManager {\n constructor() {\n this.stats = new Map();\n }\n\n get(name) {\n if (!this.stats.has(name)) {\n this.stats.set(name, new Stats({id: name}));\n }\n\n return this.stats.get(name);\n }\n}\n\nconst lumaStats = new StatsManager();\n\nif (globalThis.luma && globalThis.luma.VERSION !== VERSION) {\n throw new Error(`luma.gl - multiple VERSIONs detected: ${globalThis.luma.VERSION} vs ${VERSION}`);\n}\n\nif (!globalThis.luma) {\n if (isBrowser()) {\n log.log(1, `luma.gl ${VERSION} - ${STARTUP_MESSAGE}`)();\n }\n\n globalThis.luma = globalThis.luma || {\n VERSION,\n version: VERSION,\n log,\n\n // A global stats object that various components can add information to\n // E.g. see webgl/resource.js\n stats: lumaStats,\n\n // Keep some luma globals in a sub-object\n // This allows us to dynamically detect if certain modules have been\n // included (such as IO and headless) and enable related functionality,\n // without unconditionally requiring and thus bundling big dependencies\n // into the app.\n globals: {\n modules: {},\n nodeIO: {}\n }\n };\n}\n\nexport {lumaStats};\nexport default globalThis.luma;\n"],"file":"init.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-flat.js","names":["arrayBuffer","getScratchArrayBuffer","byteLength","ArrayBuffer","getScratchArray","Type","length","scratchArrayBuffer","BYTES_PER_ELEMENT","fillArray","target","source","start","count","total","copied","i","copyWithin"],"sources":["../../../src/utils/array-utils-flat.js"],"sourcesContent":["let arrayBuffer = null;\n\nexport function getScratchArrayBuffer(byteLength) {\n if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n arrayBuffer = new ArrayBuffer(byteLength);\n }\n return arrayBuffer;\n}\n\nexport function getScratchArray(Type, length) {\n const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n return new Type(scratchArrayBuffer, 0, length); // arrayBuffer, byteOffset, length (in elements)\n}\n\n// Uses copyWithin to significantly speed up typed array value filling\nexport function fillArray({target, source, start = 0, count = 1}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n // If we have copied less than half, copy everything we got\n // else copy remaining in one operation\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n\n/*\n\n// Creates a new Uint8Array based on two different ArrayBuffers\n// @private\n// @param {ArrayBuffers} buffer1 The first buffer.\n// @param {ArrayBuffers} buffer2 The second buffer.\n// @return {ArrayBuffers} The new ArrayBuffer created out of the two.\n//\nexport function copyArrayBuffer(\n targetBuffer, sourceBuffer, byteOffset, byteLength = sourceBuffer.byteLength\n) {\n const targetArray = new Uint8Array(targetBuffer, byteOffset, byteLength);\n const sourceArray = new Uint8Array(sourceBuffer);\n targetArray.set(sourceArray);\n return targetBuffer;\n}\n\n*/\n"],"mappings":";;;;;;;;AAAA,IAAIA,WAAW,GAAG,IAAlB;;AAEO,SAASC,qBAAT,CAA+BC,UAA/B,EAA2C;EAChD,IAAI,CAACF,WAAD,IAAgBA,WAAW,CAACE,UAAZ,GAAyBA,UAA7C,EAAyD;IACvDF,WAAW,GAAG,IAAIG,WAAJ,CAAgBD,UAAhB,CAAd;EACD;;EACD,OAAOF,WAAP;AACD;;AAEM,SAASI,eAAT,CAAyBC,IAAzB,EAA+BC,MAA/B,EAAuC;EAC5C,IAAMC,kBAAkB,GAAGN,qBAAqB,CAACI,IAAI,CAACG,iBAAL,GAAyBF,MAA1B,CAAhD;EACA,OAAO,IAAID,IAAJ,CAASE,kBAAT,EAA6B,CAA7B,EAAgCD,MAAhC,CAAP;AACD;;AAGM,SAASG,SAAT,OAA2D;EAAA,IAAvCC,MAAuC,QAAvCA,MAAuC;EAAA,IAA/BC,MAA+B,QAA/BA,MAA+B;EAAA,sBAAvBC,KAAuB;EAAA,IAAvBA,KAAuB,2BAAf,CAAe;EAAA,sBAAZC,KAAY;EAAA,IAAZA,KAAY,2BAAJ,CAAI;EAChE,IAAMP,MAAM,GAAGK,MAAM,CAACL,MAAtB;EACA,IAAMQ,KAAK,GAAGD,KAAK,GAAGP,MAAtB;EACA,IAAIS,MAAM,GAAG,CAAb;;EACA,KAAK,IAAIC,CAAC,GAAGJ,KAAb,EAAoBG,MAAM,GAAGT,MAA7B,EAAqCS,MAAM,EAA3C,EAA+C;IAC7CL,MAAM,CAACM,CAAC,EAAF,CAAN,GAAcL,MAAM,CAACI,MAAD,CAApB;EACD;;EAED,OAAOA,MAAM,GAAGD,KAAhB,EAAuB;IAGrB,IAAIC,MAAM,GAAGD,KAAK,GAAGC,MAArB,EAA6B;MAC3BL,MAAM,CAACO,UAAP,CAAkBL,KAAK,GAAGG,MAA1B,EAAkCH,KAAlC,EAAyCA,KAAK,GAAGG,MAAjD;MACAA,MAAM,IAAI,CAAV;IACD,CAHD,MAGO;MACLL,MAAM,CAACO,UAAP,CAAkBL,KAAK,GAAGG,MAA1B,EAAkCH,KAAlC,EAAyCA,KAAK,GAAGE,KAAR,GAAgBC,MAAzD;MACAA,MAAM,GAAGD,KAAT;IACD;EACF;;EAED,OAAOJ,MAAP;AACD"}
1
+ {"version":3,"sources":["../../../src/utils/array-utils-flat.js"],"names":["arrayBuffer","getScratchArrayBuffer","byteLength","ArrayBuffer","getScratchArray","Type","length","scratchArrayBuffer","BYTES_PER_ELEMENT","fillArray","target","source","start","count","total","copied","i","copyWithin"],"mappings":";;;;;;;;AAAA,IAAIA,WAAW,GAAG,IAAlB;;AAEO,SAASC,qBAAT,CAA+BC,UAA/B,EAA2C;AAChD,MAAI,CAACF,WAAD,IAAgBA,WAAW,CAACE,UAAZ,GAAyBA,UAA7C,EAAyD;AACvDF,IAAAA,WAAW,GAAG,IAAIG,WAAJ,CAAgBD,UAAhB,CAAd;AACD;;AACD,SAAOF,WAAP;AACD;;AAEM,SAASI,eAAT,CAAyBC,IAAzB,EAA+BC,MAA/B,EAAuC;AAC5C,MAAMC,kBAAkB,GAAGN,qBAAqB,CAACI,IAAI,CAACG,iBAAL,GAAyBF,MAA1B,CAAhD;AACA,SAAO,IAAID,IAAJ,CAASE,kBAAT,EAA6B,CAA7B,EAAgCD,MAAhC,CAAP;AACD;;AAGM,SAASG,SAAT,OAA2D;AAAA,MAAvCC,MAAuC,QAAvCA,MAAuC;AAAA,MAA/BC,MAA+B,QAA/BA,MAA+B;AAAA,wBAAvBC,KAAuB;AAAA,MAAvBA,KAAuB,2BAAf,CAAe;AAAA,wBAAZC,KAAY;AAAA,MAAZA,KAAY,2BAAJ,CAAI;AAChE,MAAMP,MAAM,GAAGK,MAAM,CAACL,MAAtB;AACA,MAAMQ,KAAK,GAAGD,KAAK,GAAGP,MAAtB;AACA,MAAIS,MAAM,GAAG,CAAb;;AACA,OAAK,IAAIC,CAAC,GAAGJ,KAAb,EAAoBG,MAAM,GAAGT,MAA7B,EAAqCS,MAAM,EAA3C,EAA+C;AAC7CL,IAAAA,MAAM,CAACM,CAAC,EAAF,CAAN,GAAcL,MAAM,CAACI,MAAD,CAApB;AACD;;AAED,SAAOA,MAAM,GAAGD,KAAhB,EAAuB;AAGrB,QAAIC,MAAM,GAAGD,KAAK,GAAGC,MAArB,EAA6B;AAC3BL,MAAAA,MAAM,CAACO,UAAP,CAAkBL,KAAK,GAAGG,MAA1B,EAAkCH,KAAlC,EAAyCA,KAAK,GAAGG,MAAjD;AACAA,MAAAA,MAAM,IAAI,CAAV;AACD,KAHD,MAGO;AACLL,MAAAA,MAAM,CAACO,UAAP,CAAkBL,KAAK,GAAGG,MAA1B,EAAkCH,KAAlC,EAAyCA,KAAK,GAAGE,KAAR,GAAgBC,MAAzD;AACAA,MAAAA,MAAM,GAAGD,KAAT;AACD;AACF;;AAED,SAAOJ,MAAP;AACD","sourcesContent":["let arrayBuffer = null;\n\nexport function getScratchArrayBuffer(byteLength) {\n if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n arrayBuffer = new ArrayBuffer(byteLength);\n }\n return arrayBuffer;\n}\n\nexport function getScratchArray(Type, length) {\n const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n return new Type(scratchArrayBuffer, 0, length); // arrayBuffer, byteOffset, length (in elements)\n}\n\n// Uses copyWithin to significantly speed up typed array value filling\nexport function fillArray({target, source, start = 0, count = 1}) {\n const length = source.length;\n const total = count * length;\n let copied = 0;\n for (let i = start; copied < length; copied++) {\n target[i++] = source[copied];\n }\n\n while (copied < total) {\n // If we have copied less than half, copy everything we got\n // else copy remaining in one operation\n if (copied < total - copied) {\n target.copyWithin(start + copied, start, start + copied);\n copied *= 2;\n } else {\n target.copyWithin(start + copied, start, start + total - copied);\n copied = total;\n }\n }\n\n return target;\n}\n\n/*\n\n// Creates a new Uint8Array based on two different ArrayBuffers\n// @private\n// @param {ArrayBuffers} buffer1 The first buffer.\n// @param {ArrayBuffers} buffer2 The second buffer.\n// @return {ArrayBuffers} The new ArrayBuffer created out of the two.\n//\nexport function copyArrayBuffer(\n targetBuffer, sourceBuffer, byteOffset, byteLength = sourceBuffer.byteLength\n) {\n const targetArray = new Uint8Array(targetBuffer, byteOffset, byteLength);\n const sourceArray = new Uint8Array(sourceBuffer);\n targetArray.set(sourceArray);\n return targetBuffer;\n}\n\n*/\n"],"file":"array-utils-flat.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"assert.js","names":["assert","condition","message","Error"],"sources":["../../../src/utils/assert.js"],"sourcesContent":["// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'luma.gl: assertion failed.');\n }\n}\n"],"mappings":";;;;;;;AAEO,SAASA,MAAT,CAAgBC,SAAhB,EAA2BC,OAA3B,EAAoC;EACzC,IAAI,CAACD,SAAL,EAAgB;IACd,MAAM,IAAIE,KAAJ,CAAUD,OAAO,IAAI,4BAArB,CAAN;EACD;AACF"}
1
+ {"version":3,"sources":["../../../src/utils/assert.js"],"names":["assert","condition","message","Error"],"mappings":";;;;;;;AAEO,SAASA,MAAT,CAAgBC,SAAhB,EAA2BC,OAA3B,EAAoC;AACzC,MAAI,CAACD,SAAL,EAAgB;AACd,UAAM,IAAIE,KAAJ,CAAUD,OAAO,IAAI,4BAArB,CAAN;AACD;AACF","sourcesContent":["// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'luma.gl: assertion failed.');\n }\n}\n"],"file":"assert.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-props.js","names":["checkProps","className","props","propChecks","removedProps","deprecatedProps","replacedProps","propName","replacementProp","replacement","log","removed","deprecated","newProps","Object","assign"],"sources":["../../../src/utils/check-props.js"],"sourcesContent":["/* Use as\nimport {checkProps} from '../util/check-props;'\n\nconst PROP_CHECKS = {\n // Removed props no longer supported, print error and link to upgrade guide\n removedProps: {\n },\n // Deprecated props\n deprecatedProps: {\n offset: 'accessor',\n stride: 'accessor',\n type: 'accessor',\n size: 'accessor',\n divisor: 'accessor',\n normalized: 'accessor',\n integer: 'accessor'\n },\n // Deprecated props that can be autosubstituted, print warning and return updated props object\n replacedProps: {\n bytes: 'byteLength'\n }\n}\n\nclass Buffer {\n setProps(props) {\n checkProps('Buffer', props, PROP_CHECKS);\n }\n}\n*/\nimport {log} from '@luma.gl/gltools';\n\nexport function checkProps(className, props, propChecks) {\n const {removedProps = {}, deprecatedProps = {}, replacedProps = {}} = propChecks;\n\n // removedProps: Removed props no longer supported\n // print error and link to upgrade guide\n for (const propName in removedProps) {\n if (propName in props) {\n const replacementProp = removedProps[propName];\n const replacement = replacementProp ? `${className}.${removedProps[propName]}` : 'N/A';\n log.removed(`${className}.${propName}`, replacement)();\n }\n }\n\n // deprecatedProps: Deprecated props that can not be autosubstituted\n // print warning and rely on caller to substitute\n for (const propName in deprecatedProps) {\n if (propName in props) {\n const replacementProp = deprecatedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n }\n }\n\n // replacedProps: Deprecated props that can be autosubstituted\n // print warning and return updated props object\n let newProps = null;\n for (const propName in replacedProps) {\n if (propName in props) {\n const replacementProp = replacedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n newProps = newProps || Object.assign({}, props);\n newProps[replacementProp] = props[propName];\n delete newProps[propName];\n }\n }\n\n return newProps || props;\n}\n"],"mappings":";;;;;;;AA6BA;;AAEO,SAASA,UAAT,CAAoBC,SAApB,EAA+BC,KAA/B,EAAsCC,UAAtC,EAAkD;EACvD,4BAAsEA,UAAtE,CAAOC,YAAP;EAAA,IAAOA,YAAP,sCAAsB,EAAtB;EAAA,4BAAsED,UAAtE,CAA0BE,eAA1B;EAAA,IAA0BA,eAA1B,sCAA4C,EAA5C;EAAA,4BAAsEF,UAAtE,CAAgDG,aAAhD;EAAA,IAAgDA,aAAhD,sCAAgE,EAAhE;;EAIA,KAAK,IAAMC,QAAX,IAAuBH,YAAvB,EAAqC;IACnC,IAAIG,QAAQ,IAAIL,KAAhB,EAAuB;MACrB,IAAMM,eAAe,GAAGJ,YAAY,CAACG,QAAD,CAApC;MACA,IAAME,WAAW,GAAGD,eAAe,aAAMP,SAAN,cAAmBG,YAAY,CAACG,QAAD,CAA/B,IAA8C,KAAjF;;MACAG,YAAA,CAAIC,OAAJ,WAAeV,SAAf,cAA4BM,QAA5B,GAAwCE,WAAxC;IACD;EACF;;EAID,KAAK,IAAMF,SAAX,IAAuBF,eAAvB,EAAwC;IACtC,IAAIE,SAAQ,IAAIL,KAAhB,EAAuB;MACrB,IAAMM,gBAAe,GAAGH,eAAe,CAACE,SAAD,CAAvC;;MACAG,YAAA,CAAIE,UAAJ,WAAkBX,SAAlB,cAA+BM,SAA/B,aAA8CN,SAA9C,cAA2DO,gBAA3D;IACD;EACF;;EAID,IAAIK,QAAQ,GAAG,IAAf;;EACA,KAAK,IAAMN,UAAX,IAAuBD,aAAvB,EAAsC;IACpC,IAAIC,UAAQ,IAAIL,KAAhB,EAAuB;MACrB,IAAMM,iBAAe,GAAGF,aAAa,CAACC,UAAD,CAArC;;MACAG,YAAA,CAAIE,UAAJ,WAAkBX,SAAlB,cAA+BM,UAA/B,aAA8CN,SAA9C,cAA2DO,iBAA3D;;MACAK,QAAQ,GAAGA,QAAQ,IAAIC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBb,KAAlB,CAAvB;MACAW,QAAQ,CAACL,iBAAD,CAAR,GAA4BN,KAAK,CAACK,UAAD,CAAjC;MACA,OAAOM,QAAQ,CAACN,UAAD,CAAf;IACD;EACF;;EAED,OAAOM,QAAQ,IAAIX,KAAnB;AACD"}
1
+ {"version":3,"sources":["../../../src/utils/check-props.js"],"names":["checkProps","className","props","propChecks","removedProps","deprecatedProps","replacedProps","propName","replacementProp","replacement","log","removed","deprecated","newProps","Object","assign"],"mappings":";;;;;;;AA6BA;;AAEO,SAASA,UAAT,CAAoBC,SAApB,EAA+BC,KAA/B,EAAsCC,UAAtC,EAAkD;AACvD,8BAAsEA,UAAtE,CAAOC,YAAP;AAAA,MAAOA,YAAP,sCAAsB,EAAtB;AAAA,8BAAsED,UAAtE,CAA0BE,eAA1B;AAAA,MAA0BA,eAA1B,sCAA4C,EAA5C;AAAA,8BAAsEF,UAAtE,CAAgDG,aAAhD;AAAA,MAAgDA,aAAhD,sCAAgE,EAAhE;;AAIA,OAAK,IAAMC,QAAX,IAAuBH,YAAvB,EAAqC;AACnC,QAAIG,QAAQ,IAAIL,KAAhB,EAAuB;AACrB,UAAMM,eAAe,GAAGJ,YAAY,CAACG,QAAD,CAApC;AACA,UAAME,WAAW,GAAGD,eAAe,aAAMP,SAAN,cAAmBG,YAAY,CAACG,QAAD,CAA/B,IAA8C,KAAjF;;AACAG,mBAAIC,OAAJ,WAAeV,SAAf,cAA4BM,QAA5B,GAAwCE,WAAxC;AACD;AACF;;AAID,OAAK,IAAMF,SAAX,IAAuBF,eAAvB,EAAwC;AACtC,QAAIE,SAAQ,IAAIL,KAAhB,EAAuB;AACrB,UAAMM,gBAAe,GAAGH,eAAe,CAACE,SAAD,CAAvC;;AACAG,mBAAIE,UAAJ,WAAkBX,SAAlB,cAA+BM,SAA/B,aAA8CN,SAA9C,cAA2DO,gBAA3D;AACD;AACF;;AAID,MAAIK,QAAQ,GAAG,IAAf;;AACA,OAAK,IAAMN,UAAX,IAAuBD,aAAvB,EAAsC;AACpC,QAAIC,UAAQ,IAAIL,KAAhB,EAAuB;AACrB,UAAMM,iBAAe,GAAGF,aAAa,CAACC,UAAD,CAArC;;AACAG,mBAAIE,UAAJ,WAAkBX,SAAlB,cAA+BM,UAA/B,aAA8CN,SAA9C,cAA2DO,iBAA3D;;AACAK,MAAAA,QAAQ,GAAGA,QAAQ,IAAIC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBb,KAAlB,CAAvB;AACAW,MAAAA,QAAQ,CAACL,iBAAD,CAAR,GAA4BN,KAAK,CAACK,UAAD,CAAjC;AACA,aAAOM,QAAQ,CAACN,UAAD,CAAf;AACD;AACF;;AAED,SAAOM,QAAQ,IAAIX,KAAnB;AACD","sourcesContent":["/* Use as\nimport {checkProps} from '../util/check-props;'\n\nconst PROP_CHECKS = {\n // Removed props no longer supported, print error and link to upgrade guide\n removedProps: {\n },\n // Deprecated props\n deprecatedProps: {\n offset: 'accessor',\n stride: 'accessor',\n type: 'accessor',\n size: 'accessor',\n divisor: 'accessor',\n normalized: 'accessor',\n integer: 'accessor'\n },\n // Deprecated props that can be autosubstituted, print warning and return updated props object\n replacedProps: {\n bytes: 'byteLength'\n }\n}\n\nclass Buffer {\n setProps(props) {\n checkProps('Buffer', props, PROP_CHECKS);\n }\n}\n*/\nimport {log} from '@luma.gl/gltools';\n\nexport function checkProps(className, props, propChecks) {\n const {removedProps = {}, deprecatedProps = {}, replacedProps = {}} = propChecks;\n\n // removedProps: Removed props no longer supported\n // print error and link to upgrade guide\n for (const propName in removedProps) {\n if (propName in props) {\n const replacementProp = removedProps[propName];\n const replacement = replacementProp ? `${className}.${removedProps[propName]}` : 'N/A';\n log.removed(`${className}.${propName}`, replacement)();\n }\n }\n\n // deprecatedProps: Deprecated props that can not be autosubstituted\n // print warning and rely on caller to substitute\n for (const propName in deprecatedProps) {\n if (propName in props) {\n const replacementProp = deprecatedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n }\n }\n\n // replacedProps: Deprecated props that can be autosubstituted\n // print warning and return updated props object\n let newProps = null;\n for (const propName in replacedProps) {\n if (propName in props) {\n const replacementProp = replacedProps[propName];\n log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();\n newProps = newProps || Object.assign({}, props);\n newProps[replacementProp] = props[propName];\n delete newProps[propName];\n }\n }\n\n return newProps || props;\n}\n"],"file":"check-props.js"}