@luma.gl/engine 8.5.19 → 8.5.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.js +6 -4
- package/dist/dist.min.js +1 -1
- package/dist/es5/animation/key-frames.js.map +1 -1
- package/dist/es5/animation/timeline.js.map +1 -1
- package/dist/es5/bundle.js.map +1 -1
- package/dist/es5/geometries/cone-geometry.js.map +1 -1
- package/dist/es5/geometries/cube-geometry.js.map +1 -1
- package/dist/es5/geometries/cylinder-geometry.js.map +1 -1
- package/dist/es5/geometries/ico-sphere-geometry.js.map +1 -1
- package/dist/es5/geometries/index.js.map +1 -1
- package/dist/es5/geometries/plane-geometry.js.map +1 -1
- package/dist/es5/geometries/sphere-geometry.js.map +1 -1
- package/dist/es5/geometries/truncated-cone-geometry.js.map +1 -1
- package/dist/es5/geometry/geometry-utils.js.map +1 -1
- package/dist/es5/geometry/geometry.js.map +1 -1
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/animation-loop.js.map +1 -1
- package/dist/es5/lib/model-utils.js.map +1 -1
- package/dist/es5/lib/model.js.map +1 -1
- package/dist/es5/lib/program-manager.js.map +1 -1
- package/dist/es5/transform/buffer-transform.js.map +1 -1
- package/dist/es5/transform/texture-transform.js.map +1 -1
- package/dist/es5/transform/transform-shader-utils.js.map +1 -1
- package/dist/es5/transform/transform.js.map +1 -1
- package/dist/es5/utils/clip-space.js.map +1 -1
- package/dist/esm/animation/key-frames.js.map +1 -1
- package/dist/esm/animation/timeline.js.map +1 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/geometries/cone-geometry.js.map +1 -1
- package/dist/esm/geometries/cube-geometry.js.map +1 -1
- package/dist/esm/geometries/cylinder-geometry.js.map +1 -1
- package/dist/esm/geometries/ico-sphere-geometry.js.map +1 -1
- package/dist/esm/geometries/index.js.map +1 -1
- package/dist/esm/geometries/plane-geometry.js.map +1 -1
- package/dist/esm/geometries/sphere-geometry.js.map +1 -1
- package/dist/esm/geometries/truncated-cone-geometry.js.map +1 -1
- package/dist/esm/geometry/geometry-utils.js.map +1 -1
- package/dist/esm/geometry/geometry.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/animation-loop.js.map +1 -1
- package/dist/esm/lib/model-utils.js.map +1 -1
- package/dist/esm/lib/model.js.map +1 -1
- package/dist/esm/lib/program-manager.js.map +1 -1
- package/dist/esm/transform/buffer-transform.js.map +1 -1
- package/dist/esm/transform/texture-transform.js.map +1 -1
- package/dist/esm/transform/transform-shader-utils.js.map +1 -1
- package/dist/esm/transform/transform.js.map +1 -1
- package/dist/esm/utils/clip-space.js.map +1 -1
- package/package.json +6 -6
- package/src/.DS_Store +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"model-utils.js","names":["Buffer","assert","GLTF_TO_LUMA_ATTRIBUTE_MAP","POSITION","NORMAL","COLOR_0","TEXCOORD_0","TEXCOORD_1","TEXCOORD_2","getBuffersFromGeometry","gl","geometry","options","buffers","indices","name","attributes","attribute","remappedName","mapAttributeName","constant","value","typedArray","accessor","inferAttributeAccessor","data","Uint16Array","Uint32Array","size","isIndexed","undefined","target","attributeMap","attributeName","category","Number","isFinite"],"sources":["../../../src/lib/model-utils.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {Buffer, assert} from '@luma.gl/webgl';\n\n// Support for mapping new geometries with glTF attribute names to \"classic\" luma.gl shader names\nconst GLTF_TO_LUMA_ATTRIBUTE_MAP = {\n POSITION: 'positions',\n NORMAL: 'normals',\n COLOR_0: 'colors',\n TEXCOORD_0: 'texCoords',\n TEXCOORD_1: 'texCoords1',\n TEXCOORD_2: 'texCoords2'\n};\n\nexport function getBuffersFromGeometry(gl, geometry, options) {\n const buffers = {};\n let indices = geometry.indices;\n\n for (const name in geometry.attributes) {\n const attribute = geometry.attributes[name];\n const remappedName = mapAttributeName(name, options);\n\n if (name === 'indices') {\n indices = attribute;\n } else if (attribute.constant) {\n buffers[remappedName] = attribute.value;\n } else {\n const typedArray = attribute.value;\n // Create accessor by copying the attribute and removing `value``\n const accessor = {...attribute};\n delete accessor.value;\n buffers[remappedName] = [new Buffer(gl, typedArray), accessor];\n\n inferAttributeAccessor(name, accessor);\n }\n }\n\n if (indices) {\n const data = indices.value || indices;\n assert(\n data instanceof Uint16Array || data instanceof Uint32Array,\n 'attribute array for \"indices\" must be of integer type'\n );\n const accessor = {\n size: 1,\n isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed\n };\n buffers.indices = [\n new Buffer(gl, {\n data,\n target: GL.ELEMENT_ARRAY_BUFFER\n }),\n accessor\n ];\n }\n\n return buffers;\n}\n\nfunction mapAttributeName(name, options) {\n const {attributeMap = GLTF_TO_LUMA_ATTRIBUTE_MAP} = options || {};\n return (attributeMap && attributeMap[name]) || name;\n}\n\n// Check for well known attribute names\n// eslint-disable-next-line complexity\nexport function inferAttributeAccessor(attributeName, attribute) {\n let category;\n switch (attributeName) {\n case 'texCoords':\n case 'texCoord1':\n case 'texCoord2':\n case 'texCoord3':\n category = 'uvs';\n break;\n case 'vertices':\n case 'positions':\n case 'normals':\n case 'pickingColors':\n category = 'vectors';\n break;\n default:\n }\n\n // Check for categorys\n switch (category) {\n case 'vectors':\n attribute.size = attribute.size || 3;\n break;\n case 'uvs':\n attribute.size = attribute.size || 2;\n break;\n default:\n }\n\n assert(Number.isFinite(attribute.size), `attribute ${attributeName} needs size`);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/model.js"],"names":["isWebGL","ProgramManager","Program","VertexArray","clear","TransformFeedback","Buffer","log","isObjectEmpty","uid","assert","getDebugTableForUniforms","getDebugTableForVertexArray","getDebugTableForProgramConfiguration","getBuffersFromGeometry","LOG_DRAW_PRIORITY","LOG_DRAW_TIMEOUT","ERR_MODEL_PARAMS","NOOP","DRAW_PARAMS","Model","constructor","gl","props","id","lastLogTime","animated","initialize","programManager","getDefaultProgramManager","_programManagerState","_managedProgram","program","vs","fs","modules","defines","inject","varyings","bufferMode","transpileToGLSL100","programProps","vertexArray","_programDirty","userData","needsRedraw","_attributes","attributes","uniforms","pickable","_checkProgram","setUniforms","Object","assign","getModuleUniforms","moduleSettings","drawMode","undefined","vertexCount","geometryBuffers","isInstanced","instanced","instanceCount","_setModelProps","geometry","Number","isFinite","setProps","delete","key","release","_deleteGeometryBuffers","getDrawMode","getVertexCount","getInstanceCount","getAttributes","getProgram","setProgram","getUniforms","setDrawMode","setVertexCount","setInstanceCount","setGeometry","setAttributes","normalizedAttributes","name","attribute","getValue","opts","updateModuleSettings","draw","framebuffer","transformFeedback","parameters","logPriority","priority","_logDrawCallStart","drawParams","getDrawParams","isIndexed","indexType","indexOffset","vertexArrayInstanced","warn","onBeforeRender","onAfterRender","didDraw","offset","_logDrawCallEnd","transform","discard","feedbackBuffers","unbindModels","_setFeedbackBuffers","forEach","model","unbindBuffers","bindBuffers","render","_feedbackBuffers","needsUpdate","stateHash","get","buffer","_setAnimationProps","animationProps","setBuffers","logLevel","logDrawTimeout","Date","now","group","collapsed","level","attributeTable","header","table","uniformTable","unusedTable","unusedCount","missingTable","count","missingCount","undefinedOnly","keys","configTable","configuration","message","groupEnd"],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\n\nimport GL from '@luma.gl/constants';\nimport {isWebGL} from '@luma.gl/gltools';\nimport ProgramManager from './program-manager';\nimport {\n Program,\n VertexArray,\n clear,\n TransformFeedback,\n Buffer,\n log,\n isObjectEmpty,\n uid,\n assert\n} from '@luma.gl/webgl';\nimport {\n getDebugTableForUniforms,\n getDebugTableForVertexArray,\n getDebugTableForProgramConfiguration\n} from '@luma.gl/webgl';\nimport {getBuffersFromGeometry} from './model-utils';\n\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\n\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\nconst DRAW_PARAMS = {};\n\nexport default class Model {\n constructor(gl, props = {}) {\n // Deduce a helpful id\n const {id = uid('model')} = props;\n assert(isWebGL(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || uid('Model');\n this.lastLogTime = 0; // TODO - move to probe.gl\n this.animated = false;\n this.initialize(props);\n }\n\n initialize(props) {\n this.props = {};\n\n this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n\n const {\n program = null,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n\n // Initialize state\n this.userData = {};\n this.needsRedraw = true;\n\n // Attributes and buffers\n // Model manages auto Buffer creation from typed arrays\n this._attributes = {}; // All attributes\n this.attributes = {}; // User defined attributes\n\n // Model manages uniform animation\n this.uniforms = {};\n\n // picking options\n this.pickable = true;\n\n this._checkProgram();\n\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms(props.moduleSettings) // Get unforms for supplied parameters\n )\n );\n\n this.drawMode = props.drawMode !== undefined ? props.drawMode : GL.TRIANGLES;\n this.vertexCount = props.vertexCount || 0;\n\n // Track buffers created by setGeometry\n this.geometryBuffers = {};\n\n // geometry might have set drawMode and vertexCount\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n this._setModelProps(props);\n\n // TODO - just to unbreak deck.gl 7.0-beta, remove as soon as updated\n this.geometry = {};\n\n // assert(program || program instanceof Program);\n assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n }\n\n setProps(props) {\n this._setModelProps(props);\n }\n\n delete() {\n // delete all attributes created by this model\n // TODO - should buffer deletes be handled by vertex array?\n for (const key in this._attributes) {\n if (this._attributes[key] !== this.attributes[key]) {\n this._attributes[key].delete();\n }\n }\n\n if (this._managedProgram) {\n this.programManager.release(this.program);\n this._managedProgram = false;\n }\n\n this.vertexArray.delete();\n\n this._deleteGeometryBuffers();\n }\n\n // GETTERS\n\n getDrawMode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n getInstanceCount() {\n return this.instanceCount;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getProgram() {\n return this.program;\n }\n\n setProgram(props) {\n const {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this._programDirty = true;\n }\n\n getUniforms() {\n return this.uniforms;\n }\n\n // SETTERS\n\n setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n }\n\n setVertexCount(vertexCount) {\n assert(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n\n setInstanceCount(instanceCount) {\n assert(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n\n setGeometry(geometry) {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n\n this._deleteGeometryBuffers();\n\n this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n\n setAttributes(attributes = {}) {\n // Avoid setting needsRedraw if no attributes\n if (isObjectEmpty(attributes)) {\n return this;\n }\n\n const normalizedAttributes = {};\n for (const name in attributes) {\n const attribute = attributes[name];\n // The `getValue` call provides support for deck.gl `Attribute` class\n // TODO - remove once deck refactoring completes\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n\n // TODO - should actually set the uniforms\n setUniforms(uniforms = {}) {\n Object.assign(this.uniforms, uniforms);\n\n return this;\n }\n\n getModuleUniforms(opts) {\n this._checkProgram();\n\n const getUniforms = this.programManager.getUniforms(this.program);\n\n if (getUniforms) {\n return getUniforms(opts);\n }\n\n return {};\n }\n\n updateModuleSettings(opts) {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n\n // DRAW CALLS\n\n clear(opts) {\n clear(this.program.gl, opts);\n return this;\n }\n\n draw(opts = {}) {\n // Lazy update program and vertex array\n this._checkProgram();\n\n const {\n moduleSettings = null,\n framebuffer,\n uniforms = {},\n attributes = {},\n transformFeedback = this.transformFeedback,\n parameters = {},\n vertexArray = this.vertexArray\n } = opts;\n\n // Update model with any just provided attributes, settings or uniforms\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n\n let logPriority;\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);\n }\n\n const drawParams = this.vertexArray.getDrawParams();\n const {\n isIndexed = drawParams.isIndexed,\n indexType = drawParams.indexType,\n indexOffset = drawParams.indexOffset,\n vertexArrayInstanced = drawParams.isInstanced\n } = this.props;\n\n if (vertexArrayInstanced && !this.isInstanced) {\n log.warn('Found instanced attributes on non-instanced model', this.id)();\n }\n\n const {isInstanced, instanceCount} = this;\n\n const {onBeforeRender = NOOP, onAfterRender = NOOP} = this.props;\n\n onBeforeRender();\n\n this.program.setUniforms(this.uniforms);\n\n const didDraw = this.program.draw(\n Object.assign(DRAW_PARAMS, opts, {\n logPriority,\n uniforms: null, // Already set (may contain \"function values\" not understood by Program)\n framebuffer,\n parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray,\n transformFeedback,\n isIndexed,\n indexType,\n isInstanced,\n instanceCount,\n offset: isIndexed ? indexOffset : 0\n })\n );\n\n onAfterRender();\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n }\n\n return didDraw;\n }\n\n // Draw call for transform feedback\n transform(opts = {}) {\n const {discard = true, feedbackBuffers, unbindModels = []} = opts;\n\n let {parameters} = opts;\n\n if (feedbackBuffers) {\n this._setFeedbackBuffers(feedbackBuffers);\n }\n\n if (discard) {\n parameters = Object.assign({}, parameters, {[GL.RASTERIZER_DISCARD]: discard});\n }\n\n unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n try {\n this.draw(Object.assign({}, opts, {parameters}));\n } finally {\n unbindModels.forEach(model => model.vertexArray.bindBuffers());\n }\n\n return this;\n }\n\n // DEPRECATED METHODS\n\n render(uniforms = {}) {\n log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n return this.setUniforms(uniforms).draw();\n }\n\n // PRIVATE METHODS\n\n _setModelProps(props) {\n Object.assign(this.props, props);\n\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n if ('pickable' in props) {\n this.pickable = props.pickable;\n }\n\n if ('instanceCount' in props) {\n this.instanceCount = props.instanceCount;\n }\n if ('geometry' in props) {\n this.setGeometry(props.geometry);\n }\n\n // webgl settings\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('_feedbackBuffers' in props) {\n this._setFeedbackBuffers(props._feedbackBuffers);\n }\n }\n\n _checkProgram() {\n const needsUpdate =\n this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n if (!needsUpdate) {\n return;\n }\n\n let {program} = this.programProps;\n\n if (program) {\n this._managedProgram = false;\n } else {\n const {\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = this.programProps;\n program = this.programManager.get({\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n });\n if (this.program && this._managedProgram) {\n this.programManager.release(this.program);\n }\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n\n assert(program instanceof Program, 'Model needs a program');\n\n this._programDirty = false;\n\n if (program === this.program) {\n return;\n }\n\n this.program = program;\n\n if (this.vertexArray) {\n // @ts-ignore TODO\n this.vertexArray.setProps({program: this.program, attributes: this.vertexArray.attributes});\n } else {\n this.vertexArray = new VertexArray(this.gl, {program: this.program});\n }\n\n // Make sure we have some reasonable default uniforms in place\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms() // Get all default uniforms,\n )\n );\n }\n\n _deleteGeometryBuffers() {\n for (const name in this.geometryBuffers) {\n // Buffer is raw value (for indices) or first element of [buffer, accessor] pair\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n if (buffer instanceof Buffer) {\n buffer.delete();\n }\n }\n }\n\n // Updates (evaluates) all function valued uniforms based on a new set of animationProps\n // experimental\n _setAnimationProps(animationProps) {\n if (this.animated) {\n assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n // const animatedUniforms = this._evaluateAnimateUniforms(animationProps);\n // Object.assign(this.uniforms, animatedUniforms);\n }\n }\n\n // Transform Feedback\n\n _setFeedbackBuffers(feedbackBuffers = {}) {\n // Avoid setting needsRedraw if no feedbackBuffers\n if (isObjectEmpty(feedbackBuffers)) {\n return this;\n }\n\n const {gl} = this.program;\n this.transformFeedback =\n this.transformFeedback ||\n new TransformFeedback(gl, {\n program: this.program\n });\n\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n\n _logDrawCallStart(logLevel) {\n const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n if (Date.now() - this.lastLogTime < logDrawTimeout) {\n return undefined;\n }\n\n this.lastLogTime = Date.now();\n\n log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, {collapsed: log.level <= 2})();\n\n return logLevel;\n }\n\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n // HACK: logLevel === undefined means logDrawCallStart didn't run\n if (logLevel === undefined) {\n return;\n }\n\n const attributeTable = getDebugTableForVertexArray({\n vertexArray,\n header: `${this.id} attributes`,\n // @ts-ignore\n attributes: this._attributes\n });\n\n const {table: uniformTable, unusedTable, unusedCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n\n // log missing uniforms\n const {table: missingTable, count: missingCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n\n if (missingCount > 0) {\n log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n // log.table(logLevel, missingTable)();\n }\n if (unusedCount > 0) {\n log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n // log.log(logLevel, 'Unused uniforms ', unusedTable)();\n }\n\n const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n\n log.table(logLevel, attributeTable)();\n\n log.table(logLevel, uniformTable)();\n\n log.table(logLevel + 1, configTable)();\n\n if (framebuffer) {\n framebuffer.log({logLevel: LOG_DRAW_PRIORITY, message: `Rendered to ${framebuffer.id}`});\n }\n\n log.groupEnd(LOG_DRAW_PRIORITY)();\n }\n}\n"],"file":"model.js"}
|
|
1
|
+
{"version":3,"file":"model.js","names":["isWebGL","ProgramManager","Program","VertexArray","clear","TransformFeedback","Buffer","log","isObjectEmpty","uid","assert","getDebugTableForUniforms","getDebugTableForVertexArray","getDebugTableForProgramConfiguration","getBuffersFromGeometry","LOG_DRAW_PRIORITY","LOG_DRAW_TIMEOUT","ERR_MODEL_PARAMS","NOOP","DRAW_PARAMS","Model","constructor","gl","props","id","lastLogTime","animated","initialize","programManager","getDefaultProgramManager","_programManagerState","_managedProgram","program","vs","fs","modules","defines","inject","varyings","bufferMode","transpileToGLSL100","programProps","vertexArray","_programDirty","userData","needsRedraw","_attributes","attributes","uniforms","pickable","_checkProgram","setUniforms","Object","assign","getModuleUniforms","moduleSettings","drawMode","undefined","vertexCount","geometryBuffers","isInstanced","instanced","instanceCount","_setModelProps","geometry","Number","isFinite","setProps","delete","key","release","_deleteGeometryBuffers","getDrawMode","getVertexCount","getInstanceCount","getAttributes","getProgram","setProgram","getUniforms","setDrawMode","setVertexCount","setInstanceCount","setGeometry","setAttributes","normalizedAttributes","name","attribute","getValue","opts","updateModuleSettings","draw","framebuffer","transformFeedback","parameters","logPriority","priority","_logDrawCallStart","drawParams","getDrawParams","isIndexed","indexType","indexOffset","vertexArrayInstanced","warn","onBeforeRender","onAfterRender","didDraw","offset","_logDrawCallEnd","transform","discard","feedbackBuffers","unbindModels","_setFeedbackBuffers","forEach","model","unbindBuffers","bindBuffers","render","_feedbackBuffers","needsUpdate","stateHash","get","buffer","_setAnimationProps","animationProps","setBuffers","logLevel","logDrawTimeout","Date","now","group","collapsed","level","attributeTable","header","table","uniformTable","unusedTable","unusedCount","missingTable","count","missingCount","undefinedOnly","keys","configTable","configuration","message","groupEnd"],"sources":["../../../src/lib/model.js"],"sourcesContent":["/* eslint-disable complexity */\n\nimport GL from '@luma.gl/constants';\nimport {isWebGL} from '@luma.gl/gltools';\nimport ProgramManager from './program-manager';\nimport {\n Program,\n VertexArray,\n clear,\n TransformFeedback,\n Buffer,\n log,\n isObjectEmpty,\n uid,\n assert\n} from '@luma.gl/webgl';\nimport {\n getDebugTableForUniforms,\n getDebugTableForVertexArray,\n getDebugTableForProgramConfiguration\n} from '@luma.gl/webgl';\nimport {getBuffersFromGeometry} from './model-utils';\n\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\n\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\nconst DRAW_PARAMS = {};\n\nexport default class Model {\n constructor(gl, props = {}) {\n // Deduce a helpful id\n const {id = uid('model')} = props;\n assert(isWebGL(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || uid('Model');\n this.lastLogTime = 0; // TODO - move to probe.gl\n this.animated = false;\n this.initialize(props);\n }\n\n initialize(props) {\n this.props = {};\n\n this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n\n const {\n program = null,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n\n // Initialize state\n this.userData = {};\n this.needsRedraw = true;\n\n // Attributes and buffers\n // Model manages auto Buffer creation from typed arrays\n this._attributes = {}; // All attributes\n this.attributes = {}; // User defined attributes\n\n // Model manages uniform animation\n this.uniforms = {};\n\n // picking options\n this.pickable = true;\n\n this._checkProgram();\n\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms(props.moduleSettings) // Get unforms for supplied parameters\n )\n );\n\n this.drawMode = props.drawMode !== undefined ? props.drawMode : GL.TRIANGLES;\n this.vertexCount = props.vertexCount || 0;\n\n // Track buffers created by setGeometry\n this.geometryBuffers = {};\n\n // geometry might have set drawMode and vertexCount\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n this._setModelProps(props);\n\n // TODO - just to unbreak deck.gl 7.0-beta, remove as soon as updated\n this.geometry = {};\n\n // assert(program || program instanceof Program);\n assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n }\n\n setProps(props) {\n this._setModelProps(props);\n }\n\n delete() {\n // delete all attributes created by this model\n // TODO - should buffer deletes be handled by vertex array?\n for (const key in this._attributes) {\n if (this._attributes[key] !== this.attributes[key]) {\n this._attributes[key].delete();\n }\n }\n\n if (this._managedProgram) {\n this.programManager.release(this.program);\n this._managedProgram = false;\n }\n\n this.vertexArray.delete();\n\n this._deleteGeometryBuffers();\n }\n\n // GETTERS\n\n getDrawMode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n getInstanceCount() {\n return this.instanceCount;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getProgram() {\n return this.program;\n }\n\n setProgram(props) {\n const {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this._programDirty = true;\n }\n\n getUniforms() {\n return this.uniforms;\n }\n\n // SETTERS\n\n setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n }\n\n setVertexCount(vertexCount) {\n assert(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n\n setInstanceCount(instanceCount) {\n assert(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n\n setGeometry(geometry) {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n\n this._deleteGeometryBuffers();\n\n this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n\n setAttributes(attributes = {}) {\n // Avoid setting needsRedraw if no attributes\n if (isObjectEmpty(attributes)) {\n return this;\n }\n\n const normalizedAttributes = {};\n for (const name in attributes) {\n const attribute = attributes[name];\n // The `getValue` call provides support for deck.gl `Attribute` class\n // TODO - remove once deck refactoring completes\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n\n // TODO - should actually set the uniforms\n setUniforms(uniforms = {}) {\n Object.assign(this.uniforms, uniforms);\n\n return this;\n }\n\n getModuleUniforms(opts) {\n this._checkProgram();\n\n const getUniforms = this.programManager.getUniforms(this.program);\n\n if (getUniforms) {\n return getUniforms(opts);\n }\n\n return {};\n }\n\n updateModuleSettings(opts) {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n\n // DRAW CALLS\n\n clear(opts) {\n clear(this.program.gl, opts);\n return this;\n }\n\n draw(opts = {}) {\n // Lazy update program and vertex array\n this._checkProgram();\n\n const {\n moduleSettings = null,\n framebuffer,\n uniforms = {},\n attributes = {},\n transformFeedback = this.transformFeedback,\n parameters = {},\n vertexArray = this.vertexArray\n } = opts;\n\n // Update model with any just provided attributes, settings or uniforms\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n\n let logPriority;\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);\n }\n\n const drawParams = this.vertexArray.getDrawParams();\n const {\n isIndexed = drawParams.isIndexed,\n indexType = drawParams.indexType,\n indexOffset = drawParams.indexOffset,\n vertexArrayInstanced = drawParams.isInstanced\n } = this.props;\n\n if (vertexArrayInstanced && !this.isInstanced) {\n log.warn('Found instanced attributes on non-instanced model', this.id)();\n }\n\n const {isInstanced, instanceCount} = this;\n\n const {onBeforeRender = NOOP, onAfterRender = NOOP} = this.props;\n\n onBeforeRender();\n\n this.program.setUniforms(this.uniforms);\n\n const didDraw = this.program.draw(\n Object.assign(DRAW_PARAMS, opts, {\n logPriority,\n uniforms: null, // Already set (may contain \"function values\" not understood by Program)\n framebuffer,\n parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray,\n transformFeedback,\n isIndexed,\n indexType,\n isInstanced,\n instanceCount,\n offset: isIndexed ? indexOffset : 0\n })\n );\n\n onAfterRender();\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n }\n\n return didDraw;\n }\n\n // Draw call for transform feedback\n transform(opts = {}) {\n const {discard = true, feedbackBuffers, unbindModels = []} = opts;\n\n let {parameters} = opts;\n\n if (feedbackBuffers) {\n this._setFeedbackBuffers(feedbackBuffers);\n }\n\n if (discard) {\n parameters = Object.assign({}, parameters, {[GL.RASTERIZER_DISCARD]: discard});\n }\n\n unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n try {\n this.draw(Object.assign({}, opts, {parameters}));\n } finally {\n unbindModels.forEach(model => model.vertexArray.bindBuffers());\n }\n\n return this;\n }\n\n // DEPRECATED METHODS\n\n render(uniforms = {}) {\n log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n return this.setUniforms(uniforms).draw();\n }\n\n // PRIVATE METHODS\n\n _setModelProps(props) {\n Object.assign(this.props, props);\n\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n if ('pickable' in props) {\n this.pickable = props.pickable;\n }\n\n if ('instanceCount' in props) {\n this.instanceCount = props.instanceCount;\n }\n if ('geometry' in props) {\n this.setGeometry(props.geometry);\n }\n\n // webgl settings\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('_feedbackBuffers' in props) {\n this._setFeedbackBuffers(props._feedbackBuffers);\n }\n }\n\n _checkProgram() {\n const needsUpdate =\n this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n if (!needsUpdate) {\n return;\n }\n\n let {program} = this.programProps;\n\n if (program) {\n this._managedProgram = false;\n } else {\n const {\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = this.programProps;\n program = this.programManager.get({\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n });\n if (this.program && this._managedProgram) {\n this.programManager.release(this.program);\n }\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n\n assert(program instanceof Program, 'Model needs a program');\n\n this._programDirty = false;\n\n if (program === this.program) {\n return;\n }\n\n this.program = program;\n\n if (this.vertexArray) {\n // @ts-ignore TODO\n this.vertexArray.setProps({program: this.program, attributes: this.vertexArray.attributes});\n } else {\n this.vertexArray = new VertexArray(this.gl, {program: this.program});\n }\n\n // Make sure we have some reasonable default uniforms in place\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms() // Get all default uniforms,\n )\n );\n }\n\n _deleteGeometryBuffers() {\n for (const name in this.geometryBuffers) {\n // Buffer is raw value (for indices) or first element of [buffer, accessor] pair\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n if (buffer instanceof Buffer) {\n buffer.delete();\n }\n }\n }\n\n // Updates (evaluates) all function valued uniforms based on a new set of animationProps\n // experimental\n _setAnimationProps(animationProps) {\n if (this.animated) {\n assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n // const animatedUniforms = this._evaluateAnimateUniforms(animationProps);\n // Object.assign(this.uniforms, animatedUniforms);\n }\n }\n\n // Transform Feedback\n\n _setFeedbackBuffers(feedbackBuffers = {}) {\n // Avoid setting needsRedraw if no feedbackBuffers\n if (isObjectEmpty(feedbackBuffers)) {\n return this;\n }\n\n const {gl} = this.program;\n this.transformFeedback =\n this.transformFeedback ||\n new TransformFeedback(gl, {\n program: this.program\n });\n\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n\n _logDrawCallStart(logLevel) {\n const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n if (Date.now() - this.lastLogTime < logDrawTimeout) {\n return undefined;\n }\n\n this.lastLogTime = Date.now();\n\n log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, {collapsed: log.level <= 2})();\n\n return logLevel;\n }\n\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n // HACK: logLevel === undefined means logDrawCallStart didn't run\n if (logLevel === undefined) {\n return;\n }\n\n const attributeTable = getDebugTableForVertexArray({\n vertexArray,\n header: `${this.id} attributes`,\n // @ts-ignore\n attributes: this._attributes\n });\n\n const {table: uniformTable, unusedTable, unusedCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n\n // log missing uniforms\n const {table: missingTable, count: missingCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n\n if (missingCount > 0) {\n log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n // log.table(logLevel, missingTable)();\n }\n if (unusedCount > 0) {\n log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n // log.log(logLevel, 'Unused uniforms ', unusedTable)();\n }\n\n const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n\n log.table(logLevel, attributeTable)();\n\n log.table(logLevel, uniformTable)();\n\n log.table(logLevel + 1, configTable)();\n\n if (framebuffer) {\n framebuffer.log({logLevel: LOG_DRAW_PRIORITY, message: `Rendered to ${framebuffer.id}`});\n }\n\n log.groupEnd(LOG_DRAW_PRIORITY)();\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/program-manager.js"],"names":["assembleShaders","Program","ProgramManager","getDefaultProgramManager","gl","luma","defaultProgramManager","constructor","_programCache","_getUniforms","_registeredModules","_hookFunctions","_defaultModules","_hashes","_hashCounter","stateHash","_useCounts","addDefaultModule","module","find","m","name","push","removeDefaultModule","moduleName","filter","addShaderHook","hook","opts","Object","assign","get","props","vs","fs","defines","inject","varyings","bufferMode","transpileToGLSL100","modules","_getModuleList","vsHash","_getHash","fsHash","moduleHashes","map","sort","varyingHashes","v","defineKeys","keys","injectKeys","defineHashes","injectHashes","key","hash","join","assembled","hookFunctions","getUniforms","x","program","release","delete","undefined","appModules","Array","length","seen","count","i","len"],"mappings":"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","sourcesContent":["import {assembleShaders} from '@luma.gl/shadertools';\nimport {Program} from '@luma.gl/webgl';\n\nexport default class ProgramManager {\n static getDefaultProgramManager(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n\n return gl.luma.defaultProgramManager;\n }\n\n constructor(gl) {\n this.gl = gl;\n\n this._programCache = {};\n this._getUniforms = {};\n this._registeredModules = {}; // TODO: Remove? This isn't used anywhere in luma.gl\n this._hookFunctions = [];\n this._defaultModules = [];\n\n this._hashes = {};\n this._hashCounter = 0;\n this.stateHash = 0; // Used change hashing if hooks are modified\n this._useCounts = {};\n }\n\n addDefaultModule(module) {\n if (!this._defaultModules.find(m => m.name === module.name)) {\n this._defaultModules.push(module);\n }\n\n this.stateHash++;\n }\n\n removeDefaultModule(module) {\n const moduleName = typeof module === 'string' ? module : module.name;\n this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n this.stateHash++;\n }\n\n addShaderHook(hook, opts) {\n if (opts) {\n hook = Object.assign(opts, {hook});\n }\n\n this._hookFunctions.push(hook);\n\n this.stateHash++;\n }\n\n get(props = {}) {\n const {\n vs = '',\n fs = '',\n defines = {},\n inject = {},\n varyings = [],\n bufferMode = 0x8c8d,\n transpileToGLSL100 = false\n } = props; // varyings/bufferMode for xform feedback, 0x8c8d = SEPARATE_ATTRIBS\n\n const modules = this._getModuleList(props.modules); // Combine with default modules\n\n const vsHash = this._getHash(vs);\n const fsHash = this._getHash(fs);\n const moduleHashes = modules.map(m => this._getHash(m.name)).sort();\n const varyingHashes = varyings.map(v => this._getHash(v));\n\n const defineKeys = Object.keys(defines).sort();\n const injectKeys = Object.keys(inject).sort();\n const defineHashes = [];\n const injectHashes = [];\n\n for (const key of defineKeys) {\n defineHashes.push(this._getHash(key));\n defineHashes.push(this._getHash(defines[key]));\n }\n\n for (const key of injectKeys) {\n injectHashes.push(this._getHash(key));\n injectHashes.push(this._getHash(inject[key]));\n }\n\n const hash = `${vsHash}/${fsHash}D${defineHashes.join('/')}M${moduleHashes.join(\n '/'\n )}I${injectHashes.join('/')}V${varyingHashes.join('/')}H${this.stateHash}B${bufferMode}${\n transpileToGLSL100 ? 'T' : ''\n }`;\n\n if (!this._programCache[hash]) {\n const assembled = assembleShaders(this.gl, {\n vs,\n fs,\n modules,\n inject,\n defines,\n hookFunctions: this._hookFunctions,\n transpileToGLSL100\n });\n\n this._programCache[hash] = new Program(this.gl, {\n hash,\n vs: assembled.vs,\n fs: assembled.fs,\n varyings,\n bufferMode\n });\n\n this._getUniforms[hash] = assembled.getUniforms || (x => {});\n this._useCounts[hash] = 0;\n }\n\n this._useCounts[hash]++;\n\n return this._programCache[hash];\n }\n\n getUniforms(program) {\n return this._getUniforms[program.hash] || null;\n }\n\n release(program) {\n const hash = program.hash;\n this._useCounts[hash]--;\n\n if (this._useCounts[hash] === 0) {\n this._programCache[hash].delete();\n delete this._programCache[hash];\n delete this._getUniforms[hash];\n delete this._useCounts[hash];\n }\n }\n\n _getHash(key) {\n if (this._hashes[key] === undefined) {\n this._hashes[key] = this._hashCounter++;\n }\n\n return this._hashes[key];\n }\n\n // Dedup and combine with default modules\n _getModuleList(appModules = []) {\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n\n for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n\n for (let i = 0, len = appModules.length; i < len; ++i) {\n const module = appModules[i];\n const name = module.name;\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n\n modules.length = count;\n\n return modules;\n }\n}\n"],"file":"program-manager.js"}
|
|
1
|
+
{"version":3,"file":"program-manager.js","names":["assembleShaders","Program","ProgramManager","getDefaultProgramManager","gl","luma","defaultProgramManager","constructor","_programCache","_getUniforms","_registeredModules","_hookFunctions","_defaultModules","_hashes","_hashCounter","stateHash","_useCounts","addDefaultModule","module","find","m","name","push","removeDefaultModule","moduleName","filter","addShaderHook","hook","opts","Object","assign","get","props","vs","fs","defines","inject","varyings","bufferMode","transpileToGLSL100","modules","_getModuleList","vsHash","_getHash","fsHash","moduleHashes","map","sort","varyingHashes","v","defineKeys","keys","injectKeys","defineHashes","injectHashes","key","hash","join","assembled","hookFunctions","getUniforms","x","program","release","delete","undefined","appModules","Array","length","seen","count","i","len"],"sources":["../../../src/lib/program-manager.js"],"sourcesContent":["import {assembleShaders} from '@luma.gl/shadertools';\nimport {Program} from '@luma.gl/webgl';\n\nexport default class ProgramManager {\n static getDefaultProgramManager(gl) {\n gl.luma = gl.luma || {};\n gl.luma.defaultProgramManager = gl.luma.defaultProgramManager || new ProgramManager(gl);\n\n return gl.luma.defaultProgramManager;\n }\n\n constructor(gl) {\n this.gl = gl;\n\n this._programCache = {};\n this._getUniforms = {};\n this._registeredModules = {}; // TODO: Remove? This isn't used anywhere in luma.gl\n this._hookFunctions = [];\n this._defaultModules = [];\n\n this._hashes = {};\n this._hashCounter = 0;\n this.stateHash = 0; // Used change hashing if hooks are modified\n this._useCounts = {};\n }\n\n addDefaultModule(module) {\n if (!this._defaultModules.find(m => m.name === module.name)) {\n this._defaultModules.push(module);\n }\n\n this.stateHash++;\n }\n\n removeDefaultModule(module) {\n const moduleName = typeof module === 'string' ? module : module.name;\n this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n this.stateHash++;\n }\n\n addShaderHook(hook, opts) {\n if (opts) {\n hook = Object.assign(opts, {hook});\n }\n\n this._hookFunctions.push(hook);\n\n this.stateHash++;\n }\n\n get(props = {}) {\n const {\n vs = '',\n fs = '',\n defines = {},\n inject = {},\n varyings = [],\n bufferMode = 0x8c8d,\n transpileToGLSL100 = false\n } = props; // varyings/bufferMode for xform feedback, 0x8c8d = SEPARATE_ATTRIBS\n\n const modules = this._getModuleList(props.modules); // Combine with default modules\n\n const vsHash = this._getHash(vs);\n const fsHash = this._getHash(fs);\n const moduleHashes = modules.map(m => this._getHash(m.name)).sort();\n const varyingHashes = varyings.map(v => this._getHash(v));\n\n const defineKeys = Object.keys(defines).sort();\n const injectKeys = Object.keys(inject).sort();\n const defineHashes = [];\n const injectHashes = [];\n\n for (const key of defineKeys) {\n defineHashes.push(this._getHash(key));\n defineHashes.push(this._getHash(defines[key]));\n }\n\n for (const key of injectKeys) {\n injectHashes.push(this._getHash(key));\n injectHashes.push(this._getHash(inject[key]));\n }\n\n const hash = `${vsHash}/${fsHash}D${defineHashes.join('/')}M${moduleHashes.join(\n '/'\n )}I${injectHashes.join('/')}V${varyingHashes.join('/')}H${this.stateHash}B${bufferMode}${\n transpileToGLSL100 ? 'T' : ''\n }`;\n\n if (!this._programCache[hash]) {\n const assembled = assembleShaders(this.gl, {\n vs,\n fs,\n modules,\n inject,\n defines,\n hookFunctions: this._hookFunctions,\n transpileToGLSL100\n });\n\n this._programCache[hash] = new Program(this.gl, {\n hash,\n vs: assembled.vs,\n fs: assembled.fs,\n varyings,\n bufferMode\n });\n\n this._getUniforms[hash] = assembled.getUniforms || (x => {});\n this._useCounts[hash] = 0;\n }\n\n this._useCounts[hash]++;\n\n return this._programCache[hash];\n }\n\n getUniforms(program) {\n return this._getUniforms[program.hash] || null;\n }\n\n release(program) {\n const hash = program.hash;\n this._useCounts[hash]--;\n\n if (this._useCounts[hash] === 0) {\n this._programCache[hash].delete();\n delete this._programCache[hash];\n delete this._getUniforms[hash];\n delete this._useCounts[hash];\n }\n }\n\n _getHash(key) {\n if (this._hashes[key] === undefined) {\n this._hashes[key] = this._hashCounter++;\n }\n\n return this._hashes[key];\n }\n\n // Dedup and combine with default modules\n _getModuleList(appModules = []) {\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n\n for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n\n for (let i = 0, len = appModules.length; i < len; ++i) {\n const module = appModules[i];\n const name = module.name;\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n\n modules.length = count;\n\n return modules;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transform/buffer-transform.js"],"names":["isWebGL2","Buffer","TransformFeedback","assert","BufferTransform","constructor","gl","props","currentIndex","feedbackMap","varyings","bindings","resources","_initialize","Object","seal","setupResources","opts","binding","_setupTransformFeedback","updateModelProps","length","assign","getDrawOptions","sourceBuffers","transformFeedback","attributes","swap","_getNextIndex","update","_setupBuffers","getBuffer","varyingName","feedbackBuffers","bufferOrParams","buffer","getData","options","delete","name","keys","_getFeedbackBuffers","sourceName","feedbackName","bufferName","bufferOrRef","sourceBuffer","byteLength","usage","accessor","_createNewBuffer","_updateBindings","model","program","buffers","_updateBinding","_swapBuffers","nextIndex","setBuffers","srcName","dstName"],"mappings":"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","sourcesContent":["import {isWebGL2} from '@luma.gl/gltools';\nimport {Buffer, TransformFeedback} from '@luma.gl/webgl';\nimport {assert} from '@luma.gl/webgl';\n\nexport default class BufferTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.currentIndex = 0;\n this.feedbackMap = {};\n this.varyings = null; // varyings array\n this.bindings = []; // each element is an object : {sourceBuffers, feedbackBuffers, transformFeedback}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n setupResources(opts) {\n for (const binding of this.bindings) {\n this._setupTransformFeedback(binding, opts);\n }\n }\n\n updateModelProps(props = {}) {\n const {varyings} = this;\n if (varyings.length > 0) {\n props = Object.assign({}, props, {varyings});\n }\n return props;\n }\n\n getDrawOptions(opts = {}) {\n const binding = this.bindings[this.currentIndex];\n const {sourceBuffers, transformFeedback} = binding;\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n\n return {attributes, transformFeedback};\n }\n\n swap() {\n if (this.feedbackMap) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupBuffers(opts);\n }\n\n // returns current feedbackBuffer of given name\n getBuffer(varyingName) {\n const {feedbackBuffers} = this.bindings[this.currentIndex];\n const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n if (!bufferOrParams) {\n return null;\n }\n return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;\n }\n\n getData(options = {}) {\n const {varyingName} = options;\n const buffer = this.getBuffer(varyingName);\n if (buffer) {\n return buffer.getData();\n }\n return null;\n }\n\n // Delete owned resources.\n delete() {\n for (const name in this.resources) {\n this.resources[name].delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n this._setupBuffers(props);\n this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n if (this.varyings.length > 0) {\n // if writting to buffers make sure it is WebGL2\n assert(isWebGL2(this.gl));\n }\n }\n\n // auto create feedback buffers if requested\n _getFeedbackBuffers(props) {\n const {sourceBuffers = {}} = props;\n const feedbackBuffers = {};\n if (this.bindings[this.currentIndex]) {\n // this gurantees a partial feedback buffer set doesn't update\n // previously set buffers during auto creation mode.\n Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n }\n if (this.feedbackMap) {\n // feedbackMap is defined as sourceBuffer as key and feedbackBuffer name as object\n for (const sourceName in this.feedbackMap) {\n const feedbackName = this.feedbackMap[sourceName];\n if (sourceName in sourceBuffers) {\n feedbackBuffers[feedbackName] = sourceName;\n }\n }\n }\n Object.assign(feedbackBuffers, props.feedbackBuffers);\n for (const bufferName in feedbackBuffers) {\n const bufferOrRef = feedbackBuffers[bufferName];\n if (typeof bufferOrRef === 'string') {\n // Create new buffer with same layout and settings as source buffer\n const sourceBuffer = sourceBuffers[bufferOrRef];\n const {byteLength, usage, accessor} = sourceBuffer;\n feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n byteLength,\n usage,\n accessor\n });\n }\n }\n\n return feedbackBuffers;\n }\n\n _setupBuffers(props = {}) {\n const {sourceBuffers = null} = props;\n Object.assign(this.feedbackMap, props.feedbackMap);\n const feedbackBuffers = this._getFeedbackBuffers(props);\n this._updateBindings({sourceBuffers, feedbackBuffers});\n }\n\n _setupTransformFeedback(binding, {model}) {\n const {program} = model;\n binding.transformFeedback = new TransformFeedback(this.gl, {\n program,\n buffers: binding.feedbackBuffers\n });\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this.feedbackMap) {\n const {sourceBuffers, feedbackBuffers} = this._swapBuffers(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceBuffers,\n feedbackBuffers\n });\n }\n }\n\n _updateBinding(binding, opts) {\n if (!binding) {\n return {\n sourceBuffers: Object.assign({}, opts.sourceBuffers),\n feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n };\n }\n Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n if (binding.transformFeedback) {\n binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n }\n return binding;\n }\n\n _swapBuffers(opts) {\n if (!this.feedbackMap) {\n return null;\n }\n const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n for (const srcName in this.feedbackMap) {\n const dstName = this.feedbackMap[srcName];\n sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n\n // make sure the new destination buffer is a Buffer object\n assert(feedbackBuffers[dstName] instanceof Buffer);\n }\n return {sourceBuffers, feedbackBuffers};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewBuffer(name, opts) {\n const buffer = new Buffer(this.gl, opts);\n if (this.resources[name]) {\n this.resources[name].delete();\n }\n this.resources[name] = buffer;\n return buffer;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n}\n"],"file":"buffer-transform.js"}
|
|
1
|
+
{"version":3,"file":"buffer-transform.js","names":["isWebGL2","Buffer","TransformFeedback","assert","BufferTransform","constructor","gl","props","currentIndex","feedbackMap","varyings","bindings","resources","_initialize","Object","seal","setupResources","opts","binding","_setupTransformFeedback","updateModelProps","length","assign","getDrawOptions","sourceBuffers","transformFeedback","attributes","swap","_getNextIndex","update","_setupBuffers","getBuffer","varyingName","feedbackBuffers","bufferOrParams","buffer","getData","options","delete","name","keys","_getFeedbackBuffers","sourceName","feedbackName","bufferName","bufferOrRef","sourceBuffer","byteLength","usage","accessor","_createNewBuffer","_updateBindings","model","program","buffers","_updateBinding","_swapBuffers","nextIndex","setBuffers","srcName","dstName"],"sources":["../../../src/transform/buffer-transform.js"],"sourcesContent":["import {isWebGL2} from '@luma.gl/gltools';\nimport {Buffer, TransformFeedback} from '@luma.gl/webgl';\nimport {assert} from '@luma.gl/webgl';\n\nexport default class BufferTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.currentIndex = 0;\n this.feedbackMap = {};\n this.varyings = null; // varyings array\n this.bindings = []; // each element is an object : {sourceBuffers, feedbackBuffers, transformFeedback}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n setupResources(opts) {\n for (const binding of this.bindings) {\n this._setupTransformFeedback(binding, opts);\n }\n }\n\n updateModelProps(props = {}) {\n const {varyings} = this;\n if (varyings.length > 0) {\n props = Object.assign({}, props, {varyings});\n }\n return props;\n }\n\n getDrawOptions(opts = {}) {\n const binding = this.bindings[this.currentIndex];\n const {sourceBuffers, transformFeedback} = binding;\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n\n return {attributes, transformFeedback};\n }\n\n swap() {\n if (this.feedbackMap) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupBuffers(opts);\n }\n\n // returns current feedbackBuffer of given name\n getBuffer(varyingName) {\n const {feedbackBuffers} = this.bindings[this.currentIndex];\n const bufferOrParams = varyingName ? feedbackBuffers[varyingName] : null;\n if (!bufferOrParams) {\n return null;\n }\n return bufferOrParams instanceof Buffer ? bufferOrParams : bufferOrParams.buffer;\n }\n\n getData(options = {}) {\n const {varyingName} = options;\n const buffer = this.getBuffer(varyingName);\n if (buffer) {\n return buffer.getData();\n }\n return null;\n }\n\n // Delete owned resources.\n delete() {\n for (const name in this.resources) {\n this.resources[name].delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n this._setupBuffers(props);\n this.varyings = props.varyings || Object.keys(this.bindings[this.currentIndex].feedbackBuffers);\n if (this.varyings.length > 0) {\n // if writting to buffers make sure it is WebGL2\n assert(isWebGL2(this.gl));\n }\n }\n\n // auto create feedback buffers if requested\n _getFeedbackBuffers(props) {\n const {sourceBuffers = {}} = props;\n const feedbackBuffers = {};\n if (this.bindings[this.currentIndex]) {\n // this gurantees a partial feedback buffer set doesn't update\n // previously set buffers during auto creation mode.\n Object.assign(feedbackBuffers, this.bindings[this.currentIndex].feedbackBuffers);\n }\n if (this.feedbackMap) {\n // feedbackMap is defined as sourceBuffer as key and feedbackBuffer name as object\n for (const sourceName in this.feedbackMap) {\n const feedbackName = this.feedbackMap[sourceName];\n if (sourceName in sourceBuffers) {\n feedbackBuffers[feedbackName] = sourceName;\n }\n }\n }\n Object.assign(feedbackBuffers, props.feedbackBuffers);\n for (const bufferName in feedbackBuffers) {\n const bufferOrRef = feedbackBuffers[bufferName];\n if (typeof bufferOrRef === 'string') {\n // Create new buffer with same layout and settings as source buffer\n const sourceBuffer = sourceBuffers[bufferOrRef];\n const {byteLength, usage, accessor} = sourceBuffer;\n feedbackBuffers[bufferName] = this._createNewBuffer(bufferName, {\n byteLength,\n usage,\n accessor\n });\n }\n }\n\n return feedbackBuffers;\n }\n\n _setupBuffers(props = {}) {\n const {sourceBuffers = null} = props;\n Object.assign(this.feedbackMap, props.feedbackMap);\n const feedbackBuffers = this._getFeedbackBuffers(props);\n this._updateBindings({sourceBuffers, feedbackBuffers});\n }\n\n _setupTransformFeedback(binding, {model}) {\n const {program} = model;\n binding.transformFeedback = new TransformFeedback(this.gl, {\n program,\n buffers: binding.feedbackBuffers\n });\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this.feedbackMap) {\n const {sourceBuffers, feedbackBuffers} = this._swapBuffers(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceBuffers,\n feedbackBuffers\n });\n }\n }\n\n _updateBinding(binding, opts) {\n if (!binding) {\n return {\n sourceBuffers: Object.assign({}, opts.sourceBuffers),\n feedbackBuffers: Object.assign({}, opts.feedbackBuffers)\n };\n }\n Object.assign(binding.sourceBuffers, opts.sourceBuffers);\n Object.assign(binding.feedbackBuffers, opts.feedbackBuffers);\n if (binding.transformFeedback) {\n binding.transformFeedback.setBuffers(binding.feedbackBuffers);\n }\n return binding;\n }\n\n _swapBuffers(opts) {\n if (!this.feedbackMap) {\n return null;\n }\n const sourceBuffers = Object.assign({}, opts.sourceBuffers);\n const feedbackBuffers = Object.assign({}, opts.feedbackBuffers);\n for (const srcName in this.feedbackMap) {\n const dstName = this.feedbackMap[srcName];\n sourceBuffers[srcName] = opts.feedbackBuffers[dstName];\n feedbackBuffers[dstName] = opts.sourceBuffers[srcName];\n\n // make sure the new destination buffer is a Buffer object\n assert(feedbackBuffers[dstName] instanceof Buffer);\n }\n return {sourceBuffers, feedbackBuffers};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewBuffer(name, opts) {\n const buffer = new Buffer(this.gl, opts);\n if (this.resources[name]) {\n this.resources[name].delete();\n }\n this.resources[name] = buffer;\n return buffer;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transform/texture-transform.js"],"names":["cloneTextureFrom","readPixelsToArray","getShaderVersion","Buffer","Texture2D","Framebuffer","_transform","transformModule","getPassthroughFS","typeToChannelCount","combineInjects","updateForTextures","getSizeUniforms","SRC_TEX_PARAMETER_OVERRIDES","FS_OUTPUT_VARIABLE","TextureTransform","constructor","gl","props","id","currentIndex","_swapTexture","targetTextureVarying","targetTextureType","samplerTextureMap","bindings","resources","_initialize","Object","seal","updateModelProps","updatedModelProps","_processVertexShader","assign","getDrawOptions","opts","sourceBuffers","sourceTextures","framebuffer","targetTexture","attributes","uniforms","parameters","discard","hasSourceTextures","hasTargetTexture","transform_elementID","elementIDBuffer","sampler","textureName","_setSourceTextureParameters","sizeUniforms","sourceTextureMap","viewport","width","height","swap","_getNextIndex","update","_setupTextures","getTargetTexture","getData","packed","pixels","ArrayType","channelCount","packedPixels","length","packCount","i","j","getFramebuffer","currentResources","delete","ownTexture","_targetTextureVarying","_createTargetTexture","textureOrReference","refTexture","_targetRefTexName","_createNewTexture","_sourceTextures","_targetTexture","keys","_updateBindings","_updateElementIDBuffer","elementCount","elementIds","Float32Array","forEach","_","index","array","data","accessor","size","setData","_updateBinding","_swapTextures","nextIndex","binding","attachments","resizeAttachments","resize","name","setParameters","texture","pixelStore","vs","inject","combinedInject","fs","_fs","version","input","inputType","output","modules","concat"],"mappings":"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","sourcesContent":["/** @typedef {import('./transform').TransformProps} TransformProps */\nimport GL from '@luma.gl/constants';\n\nimport {\n cloneTextureFrom,\n readPixelsToArray,\n getShaderVersion,\n Buffer,\n Texture2D,\n Framebuffer\n} from '@luma.gl/webgl';\n\nimport {\n _transform as transformModule,\n getPassthroughFS,\n typeToChannelCount,\n combineInjects\n} from '@luma.gl/shadertools';\n\nimport {updateForTextures, getSizeUniforms} from './transform-shader-utils';\n\n// TODO: move these constants to transform-shader-utils\n// Texture parameters needed so sample can precisely pick pixel for given element id.\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\n\nexport default class TextureTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.id = this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n updateModelProps(props = {}) {\n const updatedModelProps = this._processVertexShader(props);\n return Object.assign({}, props, updatedModelProps);\n }\n\n getDrawOptions(opts = {}) {\n const {sourceBuffers, sourceTextures, framebuffer, targetTexture} = this.bindings[\n this.currentIndex\n ];\n\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n\n for (const sampler in this.samplerTextureMap) {\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n this._setSourceTextureParameters();\n // get texture size uniforms\n const sizeUniforms = getSizeUniforms({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n }\n\n return {attributes, framebuffer, uniforms, discard, parameters};\n }\n\n swap() {\n if (this._swapTexture) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupTextures(opts);\n }\n\n // returns current target texture\n getTargetTexture() {\n const {targetTexture} = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n getData({packed = false} = {}) {\n const {framebuffer} = this.bindings[this.currentIndex];\n const pixels = readPixelsToArray(framebuffer);\n\n if (!packed) {\n return pixels;\n }\n\n // readPixels returns 4 elements for each pixel, pack the elements when requested\n const ArrayType = pixels.constructor;\n const channelCount = typeToChannelCount(this.targetTextureType);\n // @ts-ignore\n const packedPixels = new ArrayType((pixels.length * channelCount) / 4);\n let packCount = 0;\n for (let i = 0; i < pixels.length; i += 4) {\n for (let j = 0; j < channelCount; j++) {\n packedPixels[packCount++] = pixels[i + j];\n }\n }\n return packedPixels;\n }\n\n // returns current framebuffer object that is being used.\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n // Delete owned resources.\n delete() {\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n if (this.elementIDBuffer) {\n this.elementIDBuffer.delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {_targetTextureVarying, _swapTexture} = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = _targetTextureVarying;\n this._setupTextures(props);\n }\n\n // auto create target texture if requested\n _createTargetTexture(props) {\n const {sourceTextures, textureOrReference} = props;\n if (textureOrReference instanceof Texture2D) {\n return textureOrReference;\n }\n // 'targetTexture' is a reference souce texture.\n const refTexture = sourceTextures[textureOrReference];\n if (!refTexture) {\n return null;\n }\n\n // save reference texture name, when corresponding source texture is updated\n // we also update target texture.\n this._targetRefTexName = textureOrReference;\n\n return this._createNewTexture(refTexture);\n }\n\n /** @param {TransformProps} props */\n _setupTextures(props = {}) {\n const {sourceBuffers, _sourceTextures = {}, _targetTexture} = props;\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n this.hasSourceTextures =\n this.hasSourceTextures || (_sourceTextures && Object.keys(_sourceTextures).length > 0);\n this._updateBindings({sourceBuffers, sourceTextures: _sourceTextures, targetTexture});\n if ('elementCount' in props) {\n this._updateElementIDBuffer(props.elementCount);\n }\n }\n\n _updateElementIDBuffer(elementCount) {\n if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n return;\n }\n // NOTE: using float so this will work with GLSL 1.0 shaders.\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array) => {\n array[index] = index;\n });\n if (!this.elementIDBuffer) {\n this.elementIDBuffer = new Buffer(this.gl, {\n data: elementIds,\n accessor: {size: 1}\n });\n } else {\n this.elementIDBuffer.setData({data: elementIds});\n }\n this.elementCount = elementCount;\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this._swapTexture) {\n const {sourceTextures, targetTexture} = this._swapTextures(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures,\n targetTexture\n });\n }\n }\n\n _updateBinding(binding, opts) {\n const {sourceBuffers, sourceTextures, targetTexture} = opts;\n if (!binding) {\n binding = {\n sourceBuffers: {},\n sourceTextures: {},\n targetTexture: null\n };\n }\n Object.assign(binding.sourceTextures, sourceTextures);\n Object.assign(binding.sourceBuffers, sourceBuffers);\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n\n const {width, height} = targetTexture;\n const {framebuffer} = binding;\n if (framebuffer) {\n // First update texture without re-sizing attachments\n framebuffer.update({\n attachments: {[GL.COLOR_ATTACHMENT0]: targetTexture},\n resizeAttachments: false\n });\n // Resize to new taget texture size\n framebuffer.resize({width, height});\n } else {\n binding.framebuffer = new Framebuffer(this.gl, {\n id: `transform-framebuffer`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: targetTexture\n }\n });\n }\n }\n return binding;\n }\n\n // set texture filtering parameters on source textures.\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const {sourceTextures} = this.bindings[index];\n for (const name in sourceTextures) {\n sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n }\n }\n\n _swapTextures(opts) {\n if (!this._swapTexture) {\n return null;\n }\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n\n const targetTexture = opts.sourceTextures[this._swapTexture];\n\n return {sourceTextures, targetTexture};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewTexture(refTexture) {\n const texture = cloneTextureFrom(refTexture, {\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n },\n pixelStore: {\n [GL.UNPACK_FLIP_Y_WEBGL]: false\n }\n });\n\n // thre can only be one target texture\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n this.ownTexture = texture;\n\n return texture;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n // build and return shader releated parameters\n _processVertexShader(props = {}) {\n const {sourceTextures, targetTexture} = this.bindings[this.currentIndex];\n // @ts-ignore TODO - uniforms is not present\n const {vs, uniforms, targetTextureType, inject, samplerTextureMap} = updateForTextures({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n const combinedInject = combineInjects([props.inject || {}, inject]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs =\n props._fs ||\n getPassthroughFS({\n version: getShaderVersion(vs),\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: FS_OUTPUT_VARIABLE\n });\n const modules =\n this.hasSourceTextures || this.targetTextureVarying\n ? [transformModule].concat(props.modules || [])\n : props.modules;\n return {vs, fs, modules, uniforms, inject: combinedInject};\n }\n}\n"],"file":"texture-transform.js"}
|
|
1
|
+
{"version":3,"file":"texture-transform.js","names":["cloneTextureFrom","readPixelsToArray","getShaderVersion","Buffer","Texture2D","Framebuffer","_transform","transformModule","getPassthroughFS","typeToChannelCount","combineInjects","updateForTextures","getSizeUniforms","SRC_TEX_PARAMETER_OVERRIDES","FS_OUTPUT_VARIABLE","TextureTransform","constructor","gl","props","id","currentIndex","_swapTexture","targetTextureVarying","targetTextureType","samplerTextureMap","bindings","resources","_initialize","Object","seal","updateModelProps","updatedModelProps","_processVertexShader","assign","getDrawOptions","opts","sourceBuffers","sourceTextures","framebuffer","targetTexture","attributes","uniforms","parameters","discard","hasSourceTextures","hasTargetTexture","transform_elementID","elementIDBuffer","sampler","textureName","_setSourceTextureParameters","sizeUniforms","sourceTextureMap","viewport","width","height","swap","_getNextIndex","update","_setupTextures","getTargetTexture","getData","packed","pixels","ArrayType","channelCount","packedPixels","length","packCount","i","j","getFramebuffer","currentResources","delete","ownTexture","_targetTextureVarying","_createTargetTexture","textureOrReference","refTexture","_targetRefTexName","_createNewTexture","_sourceTextures","_targetTexture","keys","_updateBindings","_updateElementIDBuffer","elementCount","elementIds","Float32Array","forEach","_","index","array","data","accessor","size","setData","_updateBinding","_swapTextures","nextIndex","binding","attachments","resizeAttachments","resize","name","setParameters","texture","pixelStore","vs","inject","combinedInject","fs","_fs","version","input","inputType","output","modules","concat"],"sources":["../../../src/transform/texture-transform.js"],"sourcesContent":["/** @typedef {import('./transform').TransformProps} TransformProps */\nimport GL from '@luma.gl/constants';\n\nimport {\n cloneTextureFrom,\n readPixelsToArray,\n getShaderVersion,\n Buffer,\n Texture2D,\n Framebuffer\n} from '@luma.gl/webgl';\n\nimport {\n _transform as transformModule,\n getPassthroughFS,\n typeToChannelCount,\n combineInjects\n} from '@luma.gl/shadertools';\n\nimport {updateForTextures, getSizeUniforms} from './transform-shader-utils';\n\n// TODO: move these constants to transform-shader-utils\n// Texture parameters needed so sample can precisely pick pixel for given element id.\nconst SRC_TEX_PARAMETER_OVERRIDES = {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n};\nconst FS_OUTPUT_VARIABLE = 'transform_output';\n\nexport default class TextureTransform {\n constructor(gl, props = {}) {\n this.gl = gl;\n this.id = this.currentIndex = 0;\n this._swapTexture = null;\n this.targetTextureVarying = null;\n this.targetTextureType = null;\n this.samplerTextureMap = null;\n this.bindings = []; // each element is an object : {sourceTextures, targetTexture, framebuffer}\n\n this.resources = {}; // resources to be deleted\n\n this._initialize(props);\n Object.seal(this);\n }\n\n updateModelProps(props = {}) {\n const updatedModelProps = this._processVertexShader(props);\n return Object.assign({}, props, updatedModelProps);\n }\n\n getDrawOptions(opts = {}) {\n const {sourceBuffers, sourceTextures, framebuffer, targetTexture} = this.bindings[\n this.currentIndex\n ];\n\n const attributes = Object.assign({}, sourceBuffers, opts.attributes);\n const uniforms = Object.assign({}, opts.uniforms);\n const parameters = Object.assign({}, opts.parameters);\n let discard = opts.discard;\n\n if (this.hasSourceTextures || this.hasTargetTexture) {\n attributes.transform_elementID = this.elementIDBuffer;\n\n for (const sampler in this.samplerTextureMap) {\n const textureName = this.samplerTextureMap[sampler];\n uniforms[sampler] = sourceTextures[textureName];\n }\n this._setSourceTextureParameters();\n // get texture size uniforms\n const sizeUniforms = getSizeUniforms({\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n Object.assign(uniforms, sizeUniforms);\n }\n\n if (this.hasTargetTexture) {\n discard = false;\n parameters.viewport = [0, 0, framebuffer.width, framebuffer.height];\n }\n\n return {attributes, framebuffer, uniforms, discard, parameters};\n }\n\n swap() {\n if (this._swapTexture) {\n this.currentIndex = this._getNextIndex();\n return true;\n }\n return false;\n }\n\n // update source and/or feedbackBuffers\n update(opts = {}) {\n this._setupTextures(opts);\n }\n\n // returns current target texture\n getTargetTexture() {\n const {targetTexture} = this.bindings[this.currentIndex];\n return targetTexture;\n }\n\n getData({packed = false} = {}) {\n const {framebuffer} = this.bindings[this.currentIndex];\n const pixels = readPixelsToArray(framebuffer);\n\n if (!packed) {\n return pixels;\n }\n\n // readPixels returns 4 elements for each pixel, pack the elements when requested\n const ArrayType = pixels.constructor;\n const channelCount = typeToChannelCount(this.targetTextureType);\n // @ts-ignore\n const packedPixels = new ArrayType((pixels.length * channelCount) / 4);\n let packCount = 0;\n for (let i = 0; i < pixels.length; i += 4) {\n for (let j = 0; j < channelCount; j++) {\n packedPixels[packCount++] = pixels[i + j];\n }\n }\n return packedPixels;\n }\n\n // returns current framebuffer object that is being used.\n getFramebuffer() {\n const currentResources = this.bindings[this.currentIndex];\n return currentResources.framebuffer;\n }\n\n // Delete owned resources.\n delete() {\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n if (this.elementIDBuffer) {\n this.elementIDBuffer.delete();\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {_targetTextureVarying, _swapTexture} = props;\n this._swapTexture = _swapTexture;\n this.targetTextureVarying = _targetTextureVarying;\n this.hasTargetTexture = _targetTextureVarying;\n this._setupTextures(props);\n }\n\n // auto create target texture if requested\n _createTargetTexture(props) {\n const {sourceTextures, textureOrReference} = props;\n if (textureOrReference instanceof Texture2D) {\n return textureOrReference;\n }\n // 'targetTexture' is a reference souce texture.\n const refTexture = sourceTextures[textureOrReference];\n if (!refTexture) {\n return null;\n }\n\n // save reference texture name, when corresponding source texture is updated\n // we also update target texture.\n this._targetRefTexName = textureOrReference;\n\n return this._createNewTexture(refTexture);\n }\n\n /** @param {TransformProps} props */\n _setupTextures(props = {}) {\n const {sourceBuffers, _sourceTextures = {}, _targetTexture} = props;\n const targetTexture = this._createTargetTexture({\n sourceTextures: _sourceTextures,\n textureOrReference: _targetTexture\n });\n this.hasSourceTextures =\n this.hasSourceTextures || (_sourceTextures && Object.keys(_sourceTextures).length > 0);\n this._updateBindings({sourceBuffers, sourceTextures: _sourceTextures, targetTexture});\n if ('elementCount' in props) {\n this._updateElementIDBuffer(props.elementCount);\n }\n }\n\n _updateElementIDBuffer(elementCount) {\n if (typeof elementCount !== 'number' || this.elementCount >= elementCount) {\n return;\n }\n // NOTE: using float so this will work with GLSL 1.0 shaders.\n const elementIds = new Float32Array(elementCount);\n elementIds.forEach((_, index, array) => {\n array[index] = index;\n });\n if (!this.elementIDBuffer) {\n this.elementIDBuffer = new Buffer(this.gl, {\n data: elementIds,\n accessor: {size: 1}\n });\n } else {\n this.elementIDBuffer.setData({data: elementIds});\n }\n this.elementCount = elementCount;\n }\n\n _updateBindings(opts) {\n this.bindings[this.currentIndex] = this._updateBinding(this.bindings[this.currentIndex], opts);\n if (this._swapTexture) {\n const {sourceTextures, targetTexture} = this._swapTextures(this.bindings[this.currentIndex]);\n const nextIndex = this._getNextIndex();\n this.bindings[nextIndex] = this._updateBinding(this.bindings[nextIndex], {\n sourceTextures,\n targetTexture\n });\n }\n }\n\n _updateBinding(binding, opts) {\n const {sourceBuffers, sourceTextures, targetTexture} = opts;\n if (!binding) {\n binding = {\n sourceBuffers: {},\n sourceTextures: {},\n targetTexture: null\n };\n }\n Object.assign(binding.sourceTextures, sourceTextures);\n Object.assign(binding.sourceBuffers, sourceBuffers);\n if (targetTexture) {\n binding.targetTexture = targetTexture;\n\n const {width, height} = targetTexture;\n const {framebuffer} = binding;\n if (framebuffer) {\n // First update texture without re-sizing attachments\n framebuffer.update({\n attachments: {[GL.COLOR_ATTACHMENT0]: targetTexture},\n resizeAttachments: false\n });\n // Resize to new taget texture size\n framebuffer.resize({width, height});\n } else {\n binding.framebuffer = new Framebuffer(this.gl, {\n id: `transform-framebuffer`,\n width,\n height,\n attachments: {\n [GL.COLOR_ATTACHMENT0]: targetTexture\n }\n });\n }\n }\n return binding;\n }\n\n // set texture filtering parameters on source textures.\n _setSourceTextureParameters() {\n const index = this.currentIndex;\n const {sourceTextures} = this.bindings[index];\n for (const name in sourceTextures) {\n sourceTextures[name].setParameters(SRC_TEX_PARAMETER_OVERRIDES);\n }\n }\n\n _swapTextures(opts) {\n if (!this._swapTexture) {\n return null;\n }\n const sourceTextures = Object.assign({}, opts.sourceTextures);\n sourceTextures[this._swapTexture] = opts.targetTexture;\n\n const targetTexture = opts.sourceTextures[this._swapTexture];\n\n return {sourceTextures, targetTexture};\n }\n\n // Create a buffer and add to list of buffers to be deleted.\n _createNewTexture(refTexture) {\n const texture = cloneTextureFrom(refTexture, {\n parameters: {\n [GL.TEXTURE_MIN_FILTER]: GL.NEAREST,\n [GL.TEXTURE_MAG_FILTER]: GL.NEAREST,\n [GL.TEXTURE_WRAP_S]: GL.CLAMP_TO_EDGE,\n [GL.TEXTURE_WRAP_T]: GL.CLAMP_TO_EDGE\n },\n pixelStore: {\n [GL.UNPACK_FLIP_Y_WEBGL]: false\n }\n });\n\n // thre can only be one target texture\n if (this.ownTexture) {\n this.ownTexture.delete();\n }\n this.ownTexture = texture;\n\n return texture;\n }\n\n _getNextIndex() {\n return (this.currentIndex + 1) % 2;\n }\n\n // build and return shader releated parameters\n _processVertexShader(props = {}) {\n const {sourceTextures, targetTexture} = this.bindings[this.currentIndex];\n // @ts-ignore TODO - uniforms is not present\n const {vs, uniforms, targetTextureType, inject, samplerTextureMap} = updateForTextures({\n vs: props.vs,\n sourceTextureMap: sourceTextures,\n targetTextureVarying: this.targetTextureVarying,\n targetTexture\n });\n const combinedInject = combineInjects([props.inject || {}, inject]);\n this.targetTextureType = targetTextureType;\n this.samplerTextureMap = samplerTextureMap;\n const fs =\n props._fs ||\n getPassthroughFS({\n version: getShaderVersion(vs),\n input: this.targetTextureVarying,\n inputType: targetTextureType,\n output: FS_OUTPUT_VARIABLE\n });\n const modules =\n this.hasSourceTextures || this.targetTextureVarying\n ? [transformModule].concat(props.modules || [])\n : props.modules;\n return {vs, fs, modules, uniforms, inject: combinedInject};\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transform/transform-shader-utils.js"],"names":["assert","combineInjects","getQualifierDetails","typeToChannelSuffix","SAMPLER_UNIFORM_PREFIX","SIZE_UNIFORM_PREFIX","VS_POS_VARIABLE","updateForTextures","vs","sourceTextureMap","targetTextureVarying","targetTexture","texAttributeNames","Object","keys","sourceCount","length","targetTextureType","samplerTextureMap","updatedVs","finalInject","vsLines","split","updateVsLines","slice","forEach","line","index","lines","updated","processAttributeDefinition","updatedLine","inject","assign","getVaryingType","sizeName","uniformDeclaration","posInstructions","join","getSizeUniforms","uniforms","width","height","textureName","getAttributeDefinition","getSamplerDeclerations","samplerName","uniformDeclerations","varying","qualaiferDetails","name","type","textureMap","attributeData","channels","sampleInstruction"],"mappings":"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","sourcesContent":["import {assert} from '@luma.gl/webgl';\nimport {combineInjects, getQualifierDetails, typeToChannelSuffix} from '@luma.gl/shadertools';\n\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\n\n// Scan provided vertex shader\n// for each texture attribute, inject sampler instructions and build uniforms for sampler\n// for texture target, get varying type and inject position instruction\nexport function updateForTextures({vs, sourceTextureMap, targetTextureVarying, targetTexture}) {\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split('\\n');\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines) => {\n // TODO add early exit\n if (sourceCount > 0) {\n const updated = processAttributeDefinition(line, sourceTextureMap);\n if (updated) {\n const {updatedLine, inject} = updated;\n updateVsLines[index] = updatedLine;\n // sampleInstructions.push(sampleInstruction);\n finalInject = combineInjects([finalInject, inject]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n if (targetTextureVarying && !targetTextureType) {\n targetTextureType = getVaryingType(line, targetTextureVarying);\n }\n });\n\n if (targetTextureVarying) {\n assert(targetTexture);\n const sizeName = `${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`;\n\n const uniformDeclaration = `uniform vec2 ${sizeName};\\n`;\n const posInstructions = `\\\n vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});\n gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\\n`;\n const inject = {\n 'vs:#decl': uniformDeclaration,\n 'vs:#main-start': posInstructions\n };\n finalInject = combineInjects([finalInject, inject]);\n }\n updatedVs = updateVsLines.join('\\n');\n }\n return {\n // updated vertex shader (commented texture attribute definition)\n vs: updatedVs,\n // type (float, vec2, vec3 of vec4) target texture varying\n targetTextureType,\n // required vertex and fragment shader injects\n inject: finalInject,\n // map of sampler name to texture name, can be used to set attributes\n // usefull when swapping textures, as source and destination texture change when swap is called.\n samplerTextureMap\n };\n}\n\n// builds and returns an object contaning size uniform for each texture\nexport function getSizeUniforms({sourceTextureMap, targetTextureVarying, targetTexture}) {\n const uniforms = {};\n let width;\n let height;\n if (targetTextureVarying) {\n ({width, height} = targetTexture);\n uniforms[`${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`] = [width, height];\n }\n for (const textureName in sourceTextureMap) {\n ({width, height} = sourceTextureMap[textureName]);\n uniforms[`${SIZE_UNIFORM_PREFIX}${textureName}`] = [width, height];\n }\n return uniforms;\n}\n\n// Checks if provided line is defining an attribute, if so returns details otherwise null\nfunction getAttributeDefinition(line) {\n return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclerations(textureName) {\n const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;\n const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;\n const uniformDeclerations = `\\\n uniform sampler2D ${samplerName};\n uniform vec2 ${sizeName};`;\n return {samplerName, sizeName, uniformDeclerations};\n}\n\n// Return size (float, vec2 etc) of a given varying, null if doens't exist.\nexport function getVaryingType(line, varying) {\n const qualaiferDetails = getQualifierDetails(line, ['varying', 'out']);\n if (!qualaiferDetails) {\n return null;\n }\n return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\n\n// build required definitions, sample instructions for each texture attribute\nexport function processAttributeDefinition(line, textureMap) {\n const samplerTextureMap = {};\n const attributeData = getAttributeDefinition(line);\n if (!attributeData) {\n return null;\n }\n const {type, name} = attributeData;\n if (name && textureMap[name]) {\n // eslint-disable-next-line no-useless-escape\n const updatedLine = `\\// ${line} => Replaced by Transform with a sampler`;\n const {samplerName, sizeName, uniformDeclerations} = getSamplerDeclerations(name);\n\n const channels = typeToChannelSuffix(type);\n const sampleInstruction = ` ${type} ${name} = transform_getInput(${samplerName}, ${sizeName}).${channels};\\n`;\n\n samplerTextureMap[samplerName] = name;\n const inject = {\n 'vs:#decl': uniformDeclerations,\n 'vs:#main-start': sampleInstruction\n };\n\n // samplerNameMap\n return {\n // update vertex shader line.\n updatedLine,\n // inject object with sampler instructions.\n inject,\n // sampler name to texture name map\n samplerTextureMap\n };\n }\n return null;\n}\n"],"file":"transform-shader-utils.js"}
|
|
1
|
+
{"version":3,"file":"transform-shader-utils.js","names":["assert","combineInjects","getQualifierDetails","typeToChannelSuffix","SAMPLER_UNIFORM_PREFIX","SIZE_UNIFORM_PREFIX","VS_POS_VARIABLE","updateForTextures","vs","sourceTextureMap","targetTextureVarying","targetTexture","texAttributeNames","Object","keys","sourceCount","length","targetTextureType","samplerTextureMap","updatedVs","finalInject","vsLines","split","updateVsLines","slice","forEach","line","index","lines","updated","processAttributeDefinition","updatedLine","inject","assign","getVaryingType","sizeName","uniformDeclaration","posInstructions","join","getSizeUniforms","uniforms","width","height","textureName","getAttributeDefinition","getSamplerDeclerations","samplerName","uniformDeclerations","varying","qualaiferDetails","name","type","textureMap","attributeData","channels","sampleInstruction"],"sources":["../../../src/transform/transform-shader-utils.js"],"sourcesContent":["import {assert} from '@luma.gl/webgl';\nimport {combineInjects, getQualifierDetails, typeToChannelSuffix} from '@luma.gl/shadertools';\n\nconst SAMPLER_UNIFORM_PREFIX = 'transform_uSampler_';\nconst SIZE_UNIFORM_PREFIX = 'transform_uSize_';\nconst VS_POS_VARIABLE = 'transform_position';\n\n// Scan provided vertex shader\n// for each texture attribute, inject sampler instructions and build uniforms for sampler\n// for texture target, get varying type and inject position instruction\nexport function updateForTextures({vs, sourceTextureMap, targetTextureVarying, targetTexture}) {\n const texAttributeNames = Object.keys(sourceTextureMap);\n let sourceCount = texAttributeNames.length;\n let targetTextureType = null;\n const samplerTextureMap = {};\n let updatedVs = vs;\n let finalInject = {};\n\n if (sourceCount > 0 || targetTextureVarying) {\n const vsLines = updatedVs.split('\\n');\n const updateVsLines = vsLines.slice();\n vsLines.forEach((line, index, lines) => {\n // TODO add early exit\n if (sourceCount > 0) {\n const updated = processAttributeDefinition(line, sourceTextureMap);\n if (updated) {\n const {updatedLine, inject} = updated;\n updateVsLines[index] = updatedLine;\n // sampleInstructions.push(sampleInstruction);\n finalInject = combineInjects([finalInject, inject]);\n Object.assign(samplerTextureMap, updated.samplerTextureMap);\n sourceCount--;\n }\n }\n if (targetTextureVarying && !targetTextureType) {\n targetTextureType = getVaryingType(line, targetTextureVarying);\n }\n });\n\n if (targetTextureVarying) {\n assert(targetTexture);\n const sizeName = `${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`;\n\n const uniformDeclaration = `uniform vec2 ${sizeName};\\n`;\n const posInstructions = `\\\n vec2 ${VS_POS_VARIABLE} = transform_getPos(${sizeName});\n gl_Position = vec4(${VS_POS_VARIABLE}, 0, 1.);\\n`;\n const inject = {\n 'vs:#decl': uniformDeclaration,\n 'vs:#main-start': posInstructions\n };\n finalInject = combineInjects([finalInject, inject]);\n }\n updatedVs = updateVsLines.join('\\n');\n }\n return {\n // updated vertex shader (commented texture attribute definition)\n vs: updatedVs,\n // type (float, vec2, vec3 of vec4) target texture varying\n targetTextureType,\n // required vertex and fragment shader injects\n inject: finalInject,\n // map of sampler name to texture name, can be used to set attributes\n // usefull when swapping textures, as source and destination texture change when swap is called.\n samplerTextureMap\n };\n}\n\n// builds and returns an object contaning size uniform for each texture\nexport function getSizeUniforms({sourceTextureMap, targetTextureVarying, targetTexture}) {\n const uniforms = {};\n let width;\n let height;\n if (targetTextureVarying) {\n ({width, height} = targetTexture);\n uniforms[`${SIZE_UNIFORM_PREFIX}${targetTextureVarying}`] = [width, height];\n }\n for (const textureName in sourceTextureMap) {\n ({width, height} = sourceTextureMap[textureName]);\n uniforms[`${SIZE_UNIFORM_PREFIX}${textureName}`] = [width, height];\n }\n return uniforms;\n}\n\n// Checks if provided line is defining an attribute, if so returns details otherwise null\nfunction getAttributeDefinition(line) {\n return getQualifierDetails(line, ['attribute', 'in']);\n}\n\nfunction getSamplerDeclerations(textureName) {\n const samplerName = `${SAMPLER_UNIFORM_PREFIX}${textureName}`;\n const sizeName = `${SIZE_UNIFORM_PREFIX}${textureName}`;\n const uniformDeclerations = `\\\n uniform sampler2D ${samplerName};\n uniform vec2 ${sizeName};`;\n return {samplerName, sizeName, uniformDeclerations};\n}\n\n// Return size (float, vec2 etc) of a given varying, null if doens't exist.\nexport function getVaryingType(line, varying) {\n const qualaiferDetails = getQualifierDetails(line, ['varying', 'out']);\n if (!qualaiferDetails) {\n return null;\n }\n return qualaiferDetails.name === varying ? qualaiferDetails.type : null;\n}\n\n// build required definitions, sample instructions for each texture attribute\nexport function processAttributeDefinition(line, textureMap) {\n const samplerTextureMap = {};\n const attributeData = getAttributeDefinition(line);\n if (!attributeData) {\n return null;\n }\n const {type, name} = attributeData;\n if (name && textureMap[name]) {\n // eslint-disable-next-line no-useless-escape\n const updatedLine = `\\// ${line} => Replaced by Transform with a sampler`;\n const {samplerName, sizeName, uniformDeclerations} = getSamplerDeclerations(name);\n\n const channels = typeToChannelSuffix(type);\n const sampleInstruction = ` ${type} ${name} = transform_getInput(${samplerName}, ${sizeName}).${channels};\\n`;\n\n samplerTextureMap[samplerName] = name;\n const inject = {\n 'vs:#decl': uniformDeclerations,\n 'vs:#main-start': sampleInstruction\n };\n\n // samplerNameMap\n return {\n // update vertex shader line.\n updatedLine,\n // inject object with sampler instructions.\n inject,\n // sampler name to texture name map\n samplerTextureMap\n };\n }\n return null;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/transform/transform.js"],"names":["getPassthroughFS","BufferTransform","TextureTransform","isWebGL2","assert","isObjectEmpty","getShaderVersion","Model","Transform","isSupported","gl","constructor","props","model","elementCount","bufferTransform","textureTransform","elementIDBuffer","_initialize","Object","seal","delete","run","opts","clearRenderTarget","updatedOpts","_updateDrawOptions","framebuffer","clear","color","transform","swap","swapped","resourceTransforms","filter","Boolean","resourceTransform","getBuffer","varyingName","getData","data","getFramebuffer","update","setVertexCount","_buildResourceTransforms","_updateModelProps","assign","fs","version","vs","id","drawMode","vertexCount","setupResources","updatedProps","updateModelProps","canCreateBufferTransform","canCreateTextureTransform","getDrawOptions","feedbackBuffers","feedbackMap","varyings","length","_sourceTextures","_targetTexture","_targetTextureVarying"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {getPassthroughFS} from '@luma.gl/shadertools';\nimport BufferTransform from './buffer-transform';\nimport TextureTransform from './texture-transform';\n\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert, isObjectEmpty, getShaderVersion} from '@luma.gl/webgl';\nimport Model from '../lib/model';\n\n// takes source and target buffers/textures and setsup the pipeline\nexport default class Transform {\n static isSupported(gl) {\n // TODO : differentiate writting to buffer vs not\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n this.gl = gl;\n this.model = null;\n this.elementCount = 0;\n this.bufferTransform = null;\n this.textureTransform = null;\n this.elementIDBuffer = null;\n this._initialize(props);\n Object.seal(this);\n }\n\n // Delete owned resources.\n delete() {\n const {model, bufferTransform, textureTransform} = this;\n if (model) {\n model.delete();\n }\n if (bufferTransform) {\n bufferTransform.delete();\n }\n if (textureTransform) {\n textureTransform.delete();\n }\n }\n\n // Run one transform loop.\n run(opts = {}) {\n const {clearRenderTarget = true} = opts;\n\n const updatedOpts = this._updateDrawOptions(opts);\n\n if (clearRenderTarget && updatedOpts.framebuffer) {\n updatedOpts.framebuffer.clear({color: true});\n }\n\n this.model.transform(updatedOpts);\n }\n\n // swap resources if a map is provided\n swap() {\n let swapped = false;\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n swapped = swapped || resourceTransform.swap();\n }\n assert(swapped, 'Nothing to swap');\n }\n\n // Return Buffer object for given varying name.\n getBuffer(varyingName = null) {\n return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n }\n\n // Return data either from Buffer or from Texture\n getData(opts = {}) {\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n // @ts-ignore\n const data = resourceTransform.getData(opts);\n if (data) {\n return data;\n }\n }\n return null;\n }\n\n // Return framebuffer object if rendering to textures\n getFramebuffer() {\n return this.textureTransform && this.textureTransform.getFramebuffer();\n }\n\n // Update some or all buffer/texture bindings.\n update(opts = {}) {\n if ('elementCount' in opts) {\n // @ts-ignore TODO\n this.model.setVertexCount(opts.elementCount);\n }\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n resourceTransform.update(opts);\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {gl} = this;\n this._buildResourceTransforms(gl, props);\n\n props = this._updateModelProps(props);\n this.model = new Model(\n gl,\n Object.assign({}, props, {\n fs: props.fs || getPassthroughFS({version: getShaderVersion(props.vs)}),\n id: props.id || 'transform-model',\n drawMode: props.drawMode || GL.POINTS,\n vertexCount: props.elementCount\n })\n );\n\n /* eslint-disable no-unused-expressions */\n this.bufferTransform && this.bufferTransform.setupResources({model: this.model});\n /* eslint-enable no-unused-expressions */\n }\n\n _updateModelProps(props) {\n let updatedProps = Object.assign({}, props);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedProps = resourceTransform.updateModelProps(updatedProps);\n }\n return updatedProps;\n }\n\n _buildResourceTransforms(gl, props) {\n if (canCreateBufferTransform(props)) {\n this.bufferTransform = new BufferTransform(gl, props);\n }\n if (canCreateTextureTransform(props)) {\n this.textureTransform = new TextureTransform(gl, props);\n }\n assert(\n this.bufferTransform || this.textureTransform,\n 'must provide source/feedback buffers or source/target textures'\n );\n }\n\n _updateDrawOptions(opts) {\n let updatedOpts = Object.assign({}, opts);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n }\n return updatedOpts;\n }\n}\n\n// Helper Methods\n\nfunction canCreateBufferTransform(props) {\n if (\n !isObjectEmpty(props.feedbackBuffers) ||\n !isObjectEmpty(props.feedbackMap) ||\n (props.varyings && props.varyings.length > 0)\n ) {\n return true;\n }\n return false;\n}\n\nfunction canCreateTextureTransform(props) {\n if (\n !isObjectEmpty(props._sourceTextures) ||\n props._targetTexture ||\n props._targetTextureVarying\n ) {\n return true;\n }\n\n return false;\n}\n"],"file":"transform.js"}
|
|
1
|
+
{"version":3,"file":"transform.js","names":["getPassthroughFS","BufferTransform","TextureTransform","isWebGL2","assert","isObjectEmpty","getShaderVersion","Model","Transform","isSupported","gl","constructor","props","model","elementCount","bufferTransform","textureTransform","elementIDBuffer","_initialize","Object","seal","delete","run","opts","clearRenderTarget","updatedOpts","_updateDrawOptions","framebuffer","clear","color","transform","swap","swapped","resourceTransforms","filter","Boolean","resourceTransform","getBuffer","varyingName","getData","data","getFramebuffer","update","setVertexCount","_buildResourceTransforms","_updateModelProps","assign","fs","version","vs","id","drawMode","vertexCount","setupResources","updatedProps","updateModelProps","canCreateBufferTransform","canCreateTextureTransform","getDrawOptions","feedbackBuffers","feedbackMap","varyings","length","_sourceTextures","_targetTexture","_targetTextureVarying"],"sources":["../../../src/transform/transform.js"],"sourcesContent":["import GL from '@luma.gl/constants';\nimport {getPassthroughFS} from '@luma.gl/shadertools';\nimport BufferTransform from './buffer-transform';\nimport TextureTransform from './texture-transform';\n\nimport {isWebGL2} from '@luma.gl/gltools';\nimport {assert, isObjectEmpty, getShaderVersion} from '@luma.gl/webgl';\nimport Model from '../lib/model';\n\n// takes source and target buffers/textures and setsup the pipeline\nexport default class Transform {\n static isSupported(gl) {\n // TODO : differentiate writting to buffer vs not\n return isWebGL2(gl);\n }\n\n constructor(gl, props = {}) {\n this.gl = gl;\n this.model = null;\n this.elementCount = 0;\n this.bufferTransform = null;\n this.textureTransform = null;\n this.elementIDBuffer = null;\n this._initialize(props);\n Object.seal(this);\n }\n\n // Delete owned resources.\n delete() {\n const {model, bufferTransform, textureTransform} = this;\n if (model) {\n model.delete();\n }\n if (bufferTransform) {\n bufferTransform.delete();\n }\n if (textureTransform) {\n textureTransform.delete();\n }\n }\n\n // Run one transform loop.\n run(opts = {}) {\n const {clearRenderTarget = true} = opts;\n\n const updatedOpts = this._updateDrawOptions(opts);\n\n if (clearRenderTarget && updatedOpts.framebuffer) {\n updatedOpts.framebuffer.clear({color: true});\n }\n\n this.model.transform(updatedOpts);\n }\n\n // swap resources if a map is provided\n swap() {\n let swapped = false;\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n swapped = swapped || resourceTransform.swap();\n }\n assert(swapped, 'Nothing to swap');\n }\n\n // Return Buffer object for given varying name.\n getBuffer(varyingName = null) {\n return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n }\n\n // Return data either from Buffer or from Texture\n getData(opts = {}) {\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n // @ts-ignore\n const data = resourceTransform.getData(opts);\n if (data) {\n return data;\n }\n }\n return null;\n }\n\n // Return framebuffer object if rendering to textures\n getFramebuffer() {\n return this.textureTransform && this.textureTransform.getFramebuffer();\n }\n\n // Update some or all buffer/texture bindings.\n update(opts = {}) {\n if ('elementCount' in opts) {\n // @ts-ignore TODO\n this.model.setVertexCount(opts.elementCount);\n }\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n resourceTransform.update(opts);\n }\n }\n\n // Private\n\n _initialize(props = {}) {\n const {gl} = this;\n this._buildResourceTransforms(gl, props);\n\n props = this._updateModelProps(props);\n this.model = new Model(\n gl,\n Object.assign({}, props, {\n fs: props.fs || getPassthroughFS({version: getShaderVersion(props.vs)}),\n id: props.id || 'transform-model',\n drawMode: props.drawMode || GL.POINTS,\n vertexCount: props.elementCount\n })\n );\n\n /* eslint-disable no-unused-expressions */\n this.bufferTransform && this.bufferTransform.setupResources({model: this.model});\n /* eslint-enable no-unused-expressions */\n }\n\n _updateModelProps(props) {\n let updatedProps = Object.assign({}, props);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedProps = resourceTransform.updateModelProps(updatedProps);\n }\n return updatedProps;\n }\n\n _buildResourceTransforms(gl, props) {\n if (canCreateBufferTransform(props)) {\n this.bufferTransform = new BufferTransform(gl, props);\n }\n if (canCreateTextureTransform(props)) {\n this.textureTransform = new TextureTransform(gl, props);\n }\n assert(\n this.bufferTransform || this.textureTransform,\n 'must provide source/feedback buffers or source/target textures'\n );\n }\n\n _updateDrawOptions(opts) {\n let updatedOpts = Object.assign({}, opts);\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n }\n return updatedOpts;\n }\n}\n\n// Helper Methods\n\nfunction canCreateBufferTransform(props) {\n if (\n !isObjectEmpty(props.feedbackBuffers) ||\n !isObjectEmpty(props.feedbackMap) ||\n (props.varyings && props.varyings.length > 0)\n ) {\n return true;\n }\n return false;\n}\n\nfunction canCreateTextureTransform(props) {\n if (\n !isObjectEmpty(props._sourceTextures) ||\n props._targetTexture ||\n props._targetTextureVarying\n ) {\n return true;\n }\n\n return false;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"clip-space.js","names":["Model","Geometry","CLIPSPACE_VERTEX_SHADER","POSITIONS","ClipSpace","constructor","gl","opts","TEX_COORDS","map","coord","Object","assign","vs","geometry","drawMode","vertexCount","attributes","aClipSpacePosition","size","value","Float32Array","aTexCoord","aCoordinate","setVertexCount"],"sources":["../../../src/utils/clip-space.js"],"sourcesContent":["// ClipSpace\nimport GL from '@luma.gl/constants';\nimport Model from '../lib/model';\nimport Geometry from '../geometry/geometry';\n\nconst CLIPSPACE_VERTEX_SHADER = `\\\nattribute vec2 aClipSpacePosition;\nattribute vec2 aTexCoord;\nattribute vec2 aCoordinate;\n\nvarying vec2 position;\nvarying vec2 coordinate;\nvarying vec2 uv;\n\nvoid main(void) {\n gl_Position = vec4(aClipSpacePosition, 0., 1.);\n position = aClipSpacePosition;\n coordinate = aCoordinate;\n uv = aTexCoord;\n}\n`;\n\n/* eslint-disable indent, no-multi-spaces */\nconst POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];\n\nexport default class ClipSpace extends Model {\n constructor(gl, opts) {\n const TEX_COORDS = POSITIONS.map(coord => (coord === -1 ? 0 : coord));\n\n super(\n gl,\n Object.assign({}, opts, {\n vs: CLIPSPACE_VERTEX_SHADER,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_STRIP,\n vertexCount: 4,\n attributes: {\n aClipSpacePosition: {size: 2, value: new Float32Array(POSITIONS)},\n aTexCoord: {size: 2, value: new Float32Array(TEX_COORDS)},\n aCoordinate: {size: 2, value: new Float32Array(TEX_COORDS)}\n }\n })\n })\n );\n this.setVertexCount(4);\n }\n}\n"],"mappings":"AAEA,OAAOA,KAAP,MAAkB,cAAlB;AACA,OAAOC,QAAP,MAAqB,sBAArB;AAEA,MAAMC,uBAAuB,oUAA7B;AAkBA,MAAMC,SAAS,GAAG,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAT,EAAY,CAAC,CAAb,EAAgB,CAAC,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAlB;AAEA,eAAe,MAAMC,SAAN,SAAwBJ,KAAxB,CAA8B;EAC3CK,WAAW,CAACC,EAAD,EAAKC,IAAL,EAAW;IACpB,MAAMC,UAAU,GAAGL,SAAS,CAACM,GAAV,CAAcC,KAAK,IAAKA,KAAK,KAAK,CAAC,CAAX,GAAe,CAAf,GAAmBA,KAA3C,CAAnB;IAEA,MACEJ,EADF,EAEEK,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBL,IAAlB,EAAwB;MACtBM,EAAE,EAAEX,uBADkB;MAEtBY,QAAQ,EAAE,IAAIb,QAAJ,CAAa;QACrBc,QAAQ,GADa;QAErBC,WAAW,EAAE,CAFQ;QAGrBC,UAAU,EAAE;UACVC,kBAAkB,EAAE;YAACC,IAAI,EAAE,CAAP;YAAUC,KAAK,EAAE,IAAIC,YAAJ,CAAiBlB,SAAjB;UAAjB,CADV;UAEVmB,SAAS,EAAE;YAACH,IAAI,EAAE,CAAP;YAAUC,KAAK,EAAE,IAAIC,YAAJ,CAAiBb,UAAjB;UAAjB,CAFD;UAGVe,WAAW,EAAE;YAACJ,IAAI,EAAE,CAAP;YAAUC,KAAK,EAAE,IAAIC,YAAJ,CAAiBb,UAAjB;UAAjB;QAHH;MAHS,CAAb;IAFY,CAAxB,CAFF;IAeA,KAAKgB,cAAL,CAAoB,CAApB;EACD;;AApB0C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luma.gl/engine",
|
|
3
|
-
"version": "8.5.
|
|
3
|
+
"version": "8.5.21",
|
|
4
4
|
"description": "WebGL2 Components for High Performance Rendering and Computation",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -31,14 +31,14 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@babel/runtime": "^7.0.0",
|
|
34
|
-
"@luma.gl/constants": "8.5.
|
|
35
|
-
"@luma.gl/gltools": "8.5.
|
|
36
|
-
"@luma.gl/shadertools": "8.5.
|
|
37
|
-
"@luma.gl/webgl": "8.5.
|
|
34
|
+
"@luma.gl/constants": "8.5.21",
|
|
35
|
+
"@luma.gl/gltools": "8.5.21",
|
|
36
|
+
"@luma.gl/shadertools": "8.5.21",
|
|
37
|
+
"@luma.gl/webgl": "8.5.21",
|
|
38
38
|
"@math.gl/core": "^3.5.0",
|
|
39
39
|
"@probe.gl/env": "^3.5.0",
|
|
40
40
|
"@probe.gl/stats": "^3.5.0",
|
|
41
41
|
"@types/offscreencanvas": "^2019.7.0"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "a25cd26e6ad4df757b02004270c9c1872566c76f"
|
|
44
44
|
}
|
package/src/.DS_Store
CHANGED
|
Binary file
|