From 85ed293418ae14b9e3a59460ed498c896fdc7c67 Mon Sep 17 00:00:00 2001 From: David Manthey Date: Thu, 13 Jan 2022 10:02:19 -0500 Subject: [PATCH 1/2] perf: Add support for webgl pixelmaps. This also adds a 2D texture lookup table. This is a necessary antecedent to adding tiled pixelmaps. --- src/canvas/pixelmapFeature.js | 187 ++++++++++++++++++++++ src/pixelmapFeature.js | 280 ++++++--------------------------- src/quadFeature.js | 2 +- src/webgl/index.js | 2 + src/webgl/lookupTable2D.js | 122 ++++++++++++++ src/webgl/pixelmapFeature.frag | 47 ++++++ src/webgl/pixelmapFeature.js | 172 ++++++++++++++++++++ src/webgl/quadFeature.js | 33 +++- tests/cases/pixelmapFeature.js | 82 +++++++++- tests/cases/quadFeature.js | 14 ++ webpack.base.config.js | 8 +- 11 files changed, 713 insertions(+), 236 deletions(-) create mode 100644 src/webgl/lookupTable2D.js create mode 100644 src/webgl/pixelmapFeature.frag create mode 100644 src/webgl/pixelmapFeature.js diff --git a/src/canvas/pixelmapFeature.js b/src/canvas/pixelmapFeature.js index 7ac299c70c..00f3767876 100644 --- a/src/canvas/pixelmapFeature.js +++ b/src/canvas/pixelmapFeature.js @@ -1,6 +1,8 @@ var inherit = require('../inherit'); var registerFeature = require('../registry').registerFeature; var pixelmapFeature = require('../pixelmapFeature'); +var geo_event = require('../event'); +var util = require('../util'); /** * Create a new instance of class pixelmapFeature. @@ -22,6 +24,191 @@ var canvas_pixelmapFeature = function (arg) { var object = require('./object'); object.call(this); + var m_quadFeature, + s_exit = this._exit, + m_this = this; + + /** + * If the specified coordinates are in the rendered quad, use the basis + * information from the quad to determine the pixelmap index value so that it + * can be included in the `found` results. + * + * @param {geo.geoPosition} geo Coordinate. + * @param {string|geo.transform|null} [gcs] Input gcs. `undefined` to use + * the interface gcs, `null` to use the map gcs, or any other transform. + * @returns {geo.feature.searchResult} An object with a list of features and + * feature indices that are located at the specified point. + */ + this.pointSearch = function (geo, gcs) { + if (m_quadFeature && m_this.m_info) { + var result = m_quadFeature.pointSearch(geo, gcs); + if (result.index.length === 1 && result.extra && result.extra[result.index[0]].basis) { + var basis = result.extra[result.index[0]].basis, x, y, idx; + x = Math.floor(basis.x * m_this.m_info.width); + y = Math.floor(basis.y * m_this.m_info.height); + if (x >= 0 && x < m_this.m_info.width && + y >= 0 && y < m_this.m_info.height) { + idx = m_this.m_info.indices[y * m_this.m_info.width + x]; + result = { + index: [idx], + found: [m_this.data()[idx]] + }; + return result; + } + } + } + return {index: [], found: []}; + }; + + /** + * Compute information for this pixelmap image. It is wasteful to call this + * if the pixelmap has already been prepared (it is invalidated by a change + * in the image). + * + * @returns {geo.pixelmapFeature.info} + */ + this._preparePixelmap = function () { + var i, idx, pixelData; + + if (!util.isReadyImage(m_this.m_srcImage)) { + return; + } + m_this.m_info = { + width: m_this.m_srcImage.naturalWidth, + height: m_this.m_srcImage.naturalHeight, + canvas: document.createElement('canvas') + }; + + m_this.m_info.canvas.width = m_this.m_info.width; + m_this.m_info.canvas.height = m_this.m_info.height; + m_this.m_info.context = m_this.m_info.canvas.getContext('2d'); + + m_this.m_info.context.drawImage(m_this.m_srcImage, 0, 0); + m_this.m_info.imageData = m_this.m_info.context.getImageData( + 0, 0, m_this.m_info.canvas.width, m_this.m_info.canvas.height); + pixelData = m_this.m_info.imageData.data; + m_this.m_info.indices = new Array(pixelData.length / 4); + m_this.m_info.area = pixelData.length / 4; + + m_this.m_info.mappedColors = {}; + for (i = 0; i < pixelData.length; i += 4) { + idx = pixelData[i] + (pixelData[i + 1] << 8) + (pixelData[i + 2] << 16); + m_this.m_info.indices[i / 4] = idx; + if (!m_this.m_info.mappedColors[idx]) { + m_this.m_info.mappedColors[idx] = {first: i / 4}; + } + m_this.m_info.mappedColors[idx].last = i / 4; + } + return m_this.m_info; + }; + + /** + * Given the loaded pixelmap image, create a canvas the size of the image. + * Compute a color for each distinct index and recolor the canvas based on + * these colors, then draw the resultant image as a quad. + * + * @fires geo.event.pixelmap.prepared + */ + this._computePixelmap = function () { + var data = m_this.data() || [], + colorFunc = m_this.style.get('color'), + i, idx, lastidx, color, pixelData, indices, mappedColors, + updateFirst, updateLast = -1, update, prepared; + + if (!m_this.m_info) { + if (!m_this._preparePixelmap()) { + return; + } + prepared = true; + } + mappedColors = m_this.m_info.mappedColors; + updateFirst = m_this.m_info.area; + for (idx in mappedColors) { + if (mappedColors.hasOwnProperty(idx)) { + color = colorFunc(data[idx], +idx) || {}; + color = [ + (color.r || 0) * 255, + (color.g || 0) * 255, + (color.b || 0) * 255, + color.a === undefined ? 255 : (color.a * 255) + ]; + mappedColors[idx].update = ( + !mappedColors[idx].color || + mappedColors[idx].color[0] !== color[0] || + mappedColors[idx].color[1] !== color[1] || + mappedColors[idx].color[2] !== color[2] || + mappedColors[idx].color[3] !== color[3]); + if (mappedColors[idx].update) { + mappedColors[idx].color = color; + updateFirst = Math.min(mappedColors[idx].first, updateFirst); + updateLast = Math.max(mappedColors[idx].last, updateLast); + } + } + } + /* If nothing was updated, we are done */ + if (updateFirst >= updateLast) { + return; + } + /* Update only the extent that has changed */ + pixelData = m_this.m_info.imageData.data; + indices = m_this.m_info.indices; + for (i = updateFirst; i <= updateLast; i += 1) { + idx = indices[i]; + if (idx !== lastidx) { + lastidx = idx; + color = mappedColors[idx].color; + update = mappedColors[idx].update; + } + if (update) { + pixelData[i * 4] = color[0]; + pixelData[i * 4 + 1] = color[1]; + pixelData[i * 4 + 2] = color[2]; + pixelData[i * 4 + 3] = color[3]; + } + } + /* Place the updated area into the canvas */ + m_this.m_info.context.putImageData( + m_this.m_info.imageData, 0, 0, 0, Math.floor(updateFirst / m_this.m_info.width), + m_this.m_info.width, Math.ceil((updateLast + 1) / m_this.m_info.width)); + + /* If we haven't made a quad feature, make one now. The quad feature needs + * to have the canvas capability. */ + if (!m_quadFeature) { + m_quadFeature = m_this.layer().createFeature('quad', { + selectionAPI: false, + gcs: m_this.gcs(), + visible: m_this.visible(undefined, true) + }); + m_this.dependentFeatures([m_quadFeature]); + m_quadFeature.style({ + image: m_this.m_info.canvas, + position: m_this.style.get('position')}) + .data([{}]) + .draw(); + } + /* If we prepared the pixelmap and rendered it, send a prepared event */ + if (prepared) { + m_this.geoTrigger(geo_event.pixelmap.prepared, { + pixelmap: m_this + }); + } + }; + + /** + * Destroy. Deletes the associated quadFeature. + * + * @returns {this} + */ + this._exit = function () { + if (m_quadFeature && m_this.layer()) { + m_this.layer().deleteFeature(m_quadFeature); + m_quadFeature = null; + m_this.dependentFeatures([]); + } + s_exit(); + return m_this; + }; + this._init(arg); return this; }; diff --git a/src/pixelmapFeature.js b/src/pixelmapFeature.js index 1a95996e92..4730ea9e6e 100644 --- a/src/pixelmapFeature.js +++ b/src/pixelmapFeature.js @@ -1,7 +1,6 @@ var $ = require('jquery'); var inherit = require('./inherit'); var feature = require('./feature'); -var geo_event = require('./event'); var util = require('./util'); /** @@ -72,12 +71,8 @@ var pixelmapFeature = function (arg) { * @private */ var m_this = this, - m_quadFeature, - m_srcImage, - m_info, s_update = this._update, - s_init = this._init, - s_exit = this._exit; + s_init = this._init; this.featureType = 'pixelmap'; @@ -113,7 +108,7 @@ var pixelmapFeature = function (arg) { if (val === undefined) { return m_this.style('url'); } else if (val !== m_this.style('url')) { - m_srcImage = m_info = undefined; + m_this.m_srcImage = m_this.m_info = undefined; m_this.style('url', val); m_this.dataTime().modified(); m_this.modified(); @@ -121,28 +116,6 @@ var pixelmapFeature = function (arg) { return m_this; }; - /** - * Get the maximum index value from the pixelmap. This is a value present in - * the pixelmap. - * - * @returns {number} The maximum index value. - */ - this.maxIndex = function () { - if (m_info) { - /* This isn't just m_info.mappedColors.length - 1, since there - * may be more data than actual indices. */ - if (m_info.maxIndex === undefined) { - m_info.maxIndex = 0; - for (var idx in m_info.mappedColors) { - if (m_info.mappedColors.hasOwnProperty(idx)) { - m_info.maxIndex = Math.max(m_info.maxIndex, idx); - } - } - } - return m_info.maxIndex; - } - }; - /** * Get/Set color accessor. * @@ -162,35 +135,51 @@ var pixelmapFeature = function (arg) { }; /** - * If the specified coordinates are in the rendered quad, use the basis - * information from the quad to determine the pixelmap index value so that it - * can be included in the `found` results. + * Update. * - * @param {geo.geoPosition} geo Coordinate. - * @param {string|geo.transform|null} [gcs] Input gcs. `undefined` to use - * the interface gcs, `null` to use the map gcs, or any other transform. - * @returns {geo.feature.searchResult} An object with a list of features and - * feature indices that are located at the specified point. + * @returns {this} */ - this.pointSearch = function (geo, gcs) { - if (m_quadFeature && m_info) { - var result = m_quadFeature.pointSearch(geo, gcs); - if (result.index.length === 1 && result.extra && result.extra[result.index[0]].basis) { - var basis = result.extra[result.index[0]].basis, x, y, idx; - x = Math.floor(basis.x * m_info.width); - y = Math.floor(basis.y * m_info.height); - if (x >= 0 && x < m_info.width && - y >= 0 && y < m_info.height) { - idx = m_info.indices[y * m_info.width + x]; - result = { - index: [idx], - found: [m_this.data()[idx]] - }; - return result; + this._update = function () { + s_update.call(m_this); + if (m_this.buildTime().timestamp() <= m_this.dataTime().timestamp() || + m_this.updateTime().timestamp() < m_this.timestamp()) { + m_this._build(); + } + + m_this.updateTime().modified(); + return m_this; + }; + + /** + * Get the maximum index value from the pixelmap. This is a value present in + * the pixelmap. + * + * @returns {number} The maximum index value. + */ + this.maxIndex = function () { + if (m_this.m_info) { + /* This isn't just m_info.mappedColors.length - 1, since there + * may be more data than actual indices. */ + if (m_this.m_info.maxIndex === undefined) { + m_this.m_info.maxIndex = 0; + for (var idx in m_this.m_info.mappedColors) { + if (m_this.m_info.mappedColors.hasOwnProperty(idx)) { + m_this.m_info.maxIndex = Math.max(m_this.m_info.maxIndex, idx); + } } } + return m_this.m_info.maxIndex; } - return {index: [], found: []}; + }; + + /** + * Given the loaded pixelmap image, create a canvas the size of the image. + * Compute a color for each distinct index and recolor the canvas based on + * these colors, then draw the resultant image as a quad. + * + * @fires geo.event.pixelmap.prepared + */ + this._computePixelmap = function () { }; /** @@ -204,42 +193,42 @@ var pixelmapFeature = function (arg) { * checks if this feature is built. Setting the build time avoids calling * this a second time. */ m_this.buildTime().modified(); - if (!m_srcImage) { + if (!m_this.m_srcImage) { var src = m_this.style.get('url')(); if (util.isReadyImage(src)) { /* we have an already loaded image, so we can just use it. */ - m_srcImage = src; + m_this.m_srcImage = src; m_this._computePixelmap(); } else if (src) { var defer = $.Deferred(), prev_onload, prev_onerror; if (src instanceof Image) { /* we have an unloaded image. Hook to the load and error callbacks * so that when it is loaded we can use it. */ - m_srcImage = src; + m_this.m_srcImage = src; prev_onload = src.onload; prev_onerror = src.onerror; } else { /* we were given a url, so construct a new image */ - m_srcImage = new Image(); + m_this.m_srcImage = new Image(); // Only set the crossOrigin parameter if this is going across origins. if (src.indexOf(':') >= 0 && src.indexOf('/') === src.indexOf(':') + 1) { - m_srcImage.crossOrigin = m_this.style.get('crossDomain')() || 'anonymous'; + m_this.m_srcImage.crossOrigin = m_this.style.get('crossDomain')() || 'anonymous'; } } - m_srcImage.onload = function () { + m_this.m_srcImage.onload = function () { if (prev_onload) { prev_onload.apply(m_this, arguments); } /* Only use this image if our pixelmap hasn't changed since we * attached our handler */ if (m_this.style.get('url')() === src) { - m_info = undefined; + m_this.m_info = undefined; m_this._computePixelmap(); } defer.resolve(); }; - m_srcImage.onerror = function () { + m_this.m_srcImage.onerror = function () { if (prev_onerror) { prev_onerror.apply(m_this, arguments); } @@ -248,180 +237,15 @@ var pixelmapFeature = function (arg) { defer.promise(m_this); m_this.layer().addPromise(m_this); if (!(src instanceof Image)) { - m_srcImage.src = src; + m_this.m_srcImage.src = src; } } - } else if (m_info) { + } else if (m_this.m_info) { m_this._computePixelmap(); } return m_this; }; - /** - * Compute information for this pixelmap image. It is wasteful to call this - * if the pixelmap has already been prepared (it is invalidated by a change - * in the image). - * - * @returns {geo.pixelmapFeature.info} - */ - this._preparePixelmap = function () { - var i, idx, pixelData; - - if (!util.isReadyImage(m_srcImage)) { - return; - } - m_info = { - width: m_srcImage.naturalWidth, - height: m_srcImage.naturalHeight, - canvas: document.createElement('canvas') - }; - - m_info.canvas.width = m_info.width; - m_info.canvas.height = m_info.height; - m_info.context = m_info.canvas.getContext('2d'); - - m_info.context.drawImage(m_srcImage, 0, 0); - m_info.imageData = m_info.context.getImageData( - 0, 0, m_info.canvas.width, m_info.canvas.height); - pixelData = m_info.imageData.data; - m_info.indices = new Array(pixelData.length / 4); - m_info.area = pixelData.length / 4; - - m_info.mappedColors = {}; - for (i = 0; i < pixelData.length; i += 4) { - idx = pixelData[i] + (pixelData[i + 1] << 8) + (pixelData[i + 2] << 16); - m_info.indices[i / 4] = idx; - if (!m_info.mappedColors[idx]) { - m_info.mappedColors[idx] = {first: i / 4}; - } - m_info.mappedColors[idx].last = i / 4; - } - return m_info; - }; - - /** - * Given the loaded pixelmap image, create a canvas the size of the image. - * Compute a color for each distinct index and recolor the canvas based on - * these colors, then draw the resultant image as a quad. - * - * @fires geo.event.pixelmap.prepared - */ - this._computePixelmap = function () { - var data = m_this.data() || [], - colorFunc = m_this.style.get('color'), - i, idx, lastidx, color, pixelData, indices, mappedColors, - updateFirst, updateLast = -1, update, prepared; - - if (!m_info) { - if (!m_this._preparePixelmap()) { - return; - } - prepared = true; - } - mappedColors = m_info.mappedColors; - updateFirst = m_info.area; - for (idx in mappedColors) { - if (mappedColors.hasOwnProperty(idx)) { - color = colorFunc(data[idx], +idx) || {}; - color = [ - (color.r || 0) * 255, - (color.g || 0) * 255, - (color.b || 0) * 255, - color.a === undefined ? 255 : (color.a * 255) - ]; - mappedColors[idx].update = ( - !mappedColors[idx].color || - mappedColors[idx].color[0] !== color[0] || - mappedColors[idx].color[1] !== color[1] || - mappedColors[idx].color[2] !== color[2] || - mappedColors[idx].color[3] !== color[3]); - if (mappedColors[idx].update) { - mappedColors[idx].color = color; - updateFirst = Math.min(mappedColors[idx].first, updateFirst); - updateLast = Math.max(mappedColors[idx].last, updateLast); - } - } - } - /* If nothing was updated, we are done */ - if (updateFirst >= updateLast) { - return; - } - /* Update only the extent that has changed */ - pixelData = m_info.imageData.data; - indices = m_info.indices; - for (i = updateFirst; i <= updateLast; i += 1) { - idx = indices[i]; - if (idx !== lastidx) { - lastidx = idx; - color = mappedColors[idx].color; - update = mappedColors[idx].update; - } - if (update) { - pixelData[i * 4] = color[0]; - pixelData[i * 4 + 1] = color[1]; - pixelData[i * 4 + 2] = color[2]; - pixelData[i * 4 + 3] = color[3]; - } - } - /* Place the updated area into the canvas */ - m_info.context.putImageData( - m_info.imageData, 0, 0, 0, Math.floor(updateFirst / m_info.width), - m_info.width, Math.ceil((updateLast + 1) / m_info.width)); - - /* If we haven't made a quad feature, make one now. The quad feature needs - * to have the canvas capability. */ - if (!m_quadFeature) { - m_quadFeature = m_this.layer().createFeature('quad', { - selectionAPI: false, - gcs: m_this.gcs(), - visible: m_this.visible(undefined, true) - }); - m_this.dependentFeatures([m_quadFeature]); - m_quadFeature.style({ - image: m_info.canvas, - position: m_this.style.get('position')}) - .data([{}]) - .draw(); - } - /* If we prepared the pixelmap and rendered it, send a prepared event */ - if (prepared) { - m_this.geoTrigger(geo_event.pixelmap.prepared, { - pixelmap: m_this - }); - } - }; - - /** - * Update. - * - * @returns {this} - */ - this._update = function () { - s_update.call(m_this); - if (m_this.buildTime().timestamp() <= m_this.dataTime().timestamp() || - m_this.updateTime().timestamp() < m_this.timestamp()) { - m_this._build(); - } - - m_this.updateTime().modified(); - return m_this; - }; - - /** - * Destroy. Deletes the associated quadFeature. - * - * @returns {this} - */ - this._exit = function () { - if (m_quadFeature && m_this.layer()) { - m_this.layer().deleteFeature(m_quadFeature); - m_quadFeature = null; - m_this.dependentFeatures([]); - } - s_exit(); - return m_this; - }; - /** * Initialize. * diff --git a/src/quadFeature.js b/src/quadFeature.js index b7d90f14f5..9b357226c9 100644 --- a/src/quadFeature.js +++ b/src/quadFeature.js @@ -232,7 +232,7 @@ var quadFeature = function (arg) { coordbasis.y = 1 - coordbasis.y; } if (coordbasis) { - extra[quad.idx] = {basis: coordbasis}; + extra[quad.idx] = {basis: coordbasis, _quad: quad}; } } }); diff --git a/src/webgl/index.js b/src/webgl/index.js index 65d6a99412..1d7ebd5c70 100644 --- a/src/webgl/index.js +++ b/src/webgl/index.js @@ -8,8 +8,10 @@ module.exports = { isolineFeature: require('./isolineFeature'), layer: require('./layer'), lineFeature: require('./lineFeature'), + lookupTable2D: require('./lookupTable2D'), markerFeature: require('./markerFeature'), meshColored: require('./meshColored'), + pixelmapFeature: require('./pixelmapFeature'), pointFeature: require('./pointFeature'), polygonFeature: require('./polygonFeature'), quadFeature: require('./quadFeature'), diff --git a/src/webgl/lookupTable2D.js b/src/webgl/lookupTable2D.js new file mode 100644 index 0000000000..bd0f3d6697 --- /dev/null +++ b/src/webgl/lookupTable2D.js @@ -0,0 +1,122 @@ +var inherit = require('../inherit'); +var timestamp = require('../timestamp'); +var vgl = require('vgl'); + +/** + * Switch to a specific texture unit. + * + * @param {vgl.renderState} renderState An object that contains the context + * used for drawing. + * @param {number} textureUnit The number of the texture unit [0-15]. + */ +function activateTextureUnit(renderState, textureUnit) { + if (textureUnit >= 0 && textureUnit <= 31) { + renderState.m_context.activeTexture(vgl.GL.TEXTURE0 + textureUnit); + } else { + throw Error('[error] Texture unit ' + textureUnit + ' is not supported'); + } +} + +/** + * Create a new instance of class webgl_lookupTable2D. + * + * @class + * @alias geo.webgl.lookupTable2D + * @param {object} arg Options object. + * @param {number} [arg.maxWidth] Maximum width to use for the texture. If the + * number of colors set is less than this, the texture is 1D. If greater, it + * will be a rectangle of maxWidth x whatever height is necessary. + * @param {number[]} [arg.colorTable] Initial color table for the texture. + * This is of the form RGBARGBA... where each value is an integer on the + * scale [0,255]. + * @extends vgl.texture + * @returns {geo.webgl.lookupTable2D} + */ +var webgl_lookupTable2D = function (arg) { + 'use strict'; + + if (!(this instanceof webgl_lookupTable2D)) { + return new webgl_lookupTable2D(arg); + } + arg = arg || {}; + vgl.texture.call(this); + + var m_setupTimestamp = timestamp(), + m_maxWidth = arg.maxWidth || 4096, + m_colorTable = new Uint8Array([0, 0, 0, 0]), + m_colorTableOrig, + m_this = this; + + /** + * Create lookup table, initialize parameters, and bind data to it. + * + * @param {vgl.renderState} renderState An object that contains the context + * used for drawing. + */ + this.setup = function (renderState) { + activateTextureUnit(renderState, m_this.textureUnit()); + + renderState.m_context.deleteTexture(m_this.m_textureHandle); + m_this.m_textureHandle = renderState.m_context.createTexture(); + renderState.m_context.bindTexture(vgl.GL.TEXTURE_2D, m_this.m_textureHandle); + renderState.m_context.texParameteri(vgl.GL.TEXTURE_2D, vgl.GL.TEXTURE_MIN_FILTER, vgl.GL.NEAREST); + renderState.m_context.texParameteri(vgl.GL.TEXTURE_2D, vgl.GL.TEXTURE_MAG_FILTER, vgl.GL.NEAREST); + renderState.m_context.texParameteri(vgl.GL.TEXTURE_2D, vgl.GL.TEXTURE_WRAP_S, vgl.GL.CLAMP_TO_EDGE); + renderState.m_context.texParameteri(vgl.GL.TEXTURE_2D, vgl.GL.TEXTURE_WRAP_T, vgl.GL.CLAMP_TO_EDGE); + renderState.m_context.pixelStorei(vgl.GL.UNPACK_ALIGNMENT, 1); + renderState.m_context.pixelStorei(vgl.GL.UNPACK_FLIP_Y_WEBGL, true); + + renderState.m_context.texImage2D( + vgl.GL.TEXTURE_2D, 0, vgl.GL.RGBA, m_this.width, m_this.height, 0, + vgl.GL.RGBA, vgl.GL.UNSIGNED_BYTE, m_colorTable); + + renderState.m_context.bindTexture(vgl.GL.TEXTURE_2D, null); + m_setupTimestamp.modified(); + }; + + /** + * Get/set color table. + * + * @param {number[]} [val] An array of RGBARGBA... integers on a scale + * of [0, 255]. `undefined` to get the current value. + * @returns {number[]|this} + */ + this.colorTable = function (val) { + if (val === undefined) { + return m_colorTableOrig; + } + m_colorTableOrig = val; + if (val.length < 4) { + val = [0, 0, 0, 0]; + } + m_this.width = Math.min(m_maxWidth, val.length / 4); + m_this.height = Math.ceil(val.length / 4 / m_maxWidth); + if (!(val instanceof Uint8Array) || val.length !== m_this.width * m_this.height * 4) { + if (val.length < m_this.width * m_this.height * 4) { + val = val.concat(new Array(m_this.width * m_this.height * 4 - val.length).fill(0)); + } + m_colorTable = new Uint8Array(val); + } else { + m_colorTable = val; + } + m_this.modified(); + return m_this; + }; + + /** + * Get maxWidth value. + * + * @returns {number} The maxWidth of the texture used. + */ + this.maxWidth = function () { + return m_maxWidth; + }; + + this.colorTable(arg.colorTable || []); + + return this; +}; + +inherit(webgl_lookupTable2D, vgl.texture); + +module.exports = webgl_lookupTable2D; diff --git a/src/webgl/pixelmapFeature.frag b/src/webgl/pixelmapFeature.frag new file mode 100644 index 0000000000..df26ce0a74 --- /dev/null +++ b/src/webgl/pixelmapFeature.frag @@ -0,0 +1,47 @@ +/* pixelmapFeature fragment shader */ + +varying highp vec2 iTextureCoord; +uniform sampler2D sampler2d; +uniform sampler2D lutSampler; +uniform int lutWidth; +uniform int lutHeight; +uniform mediump float opacity; +uniform highp vec2 crop; + +void main(void) { + if ((crop.s < 1.0 && iTextureCoord.s > crop.s) || (crop.t < 1.0 && 1.0 - iTextureCoord.t > crop.t)) { + discard; + } + // to add anti-aliasing, we would need to know the current pixel size + // (probably computed in the vertex shader) and then sample the base image at + // multiple points, then average the output color. + highp vec4 lutValue = texture2D(sampler2d, iTextureCoord); + highp vec2 lutCoord; + lutCoord.s = ( + mod( + // add 0.5 to handle float imprecision + floor(lutValue.r * 255.0 + 0.5) + + floor(lutValue.g * 255.0 + 0.5) * 256.0, + float(lutWidth) + // center in pixel + ) + 0.5) / float(lutWidth); + // Our image is top-down, so invert the coordinate + lutCoord.t = 1.0 - ( + floor( + ( + // add 0.5 to handle float imprecision + floor(lutValue.r * 255.0 + 0.5) + + floor(lutValue.g * 255.0 + 0.5) * 256.0 + + floor(lutValue.b * 255.0 + 0.5) * 256.0 * 256.0 + // We may want an option to use the alpha channel to allow more indices + ) / float(lutWidth) + // center in pixel + ) + 0.5) / float(lutHeight); + if (lutCoord.t < 0.0) { + discard; + } + mediump vec4 color = texture2D(lutSampler, lutCoord); + + color.a *= opacity; + gl_FragColor = color; +} diff --git a/src/webgl/pixelmapFeature.js b/src/webgl/pixelmapFeature.js new file mode 100644 index 0000000000..b7cc574265 --- /dev/null +++ b/src/webgl/pixelmapFeature.js @@ -0,0 +1,172 @@ +var inherit = require('../inherit'); +var registerFeature = require('../registry').registerFeature; +var pixelmapFeature = require('../pixelmapFeature'); +var lookupTable2D = require('./lookupTable2D'); +var util = require('../util'); + +/** + * Create a new instance of class webgl.pixelmapFeature. + * + * @class + * @alias geo.webgl.pixelmapFeature + * @extends geo.pixelmapFeature + * @param {geo.pixelmapFeature.spec} arg + * @returns {geo.webgl.pixelmapFeature} + */ +var webgl_pixelmapFeature = function (arg) { + 'use strict'; + + if (!(this instanceof webgl_pixelmapFeature)) { + return new webgl_pixelmapFeature(arg); + } + pixelmapFeature.call(this, arg); + + var object = require('./object'); + object.call(this); + + const vgl = require('vgl'); + const fragmentShader = require('./pixelmapFeature.frag'); + + var m_quadFeature, + s_exit = this._exit, + m_lookupTable, + m_this = this; + + /** + * If the specified coordinates are in the rendered quad, use the basis + * information from the quad to determine the pixelmap index value so that it + * can be included in the `found` results. + * + * @param {geo.geoPosition} geo Coordinate. + * @param {string|geo.transform|null} [gcs] Input gcs. `undefined` to use + * the interface gcs, `null` to use the map gcs, or any other transform. + * @returns {geo.feature.searchResult} An object with a list of features and + * feature indices that are located at the specified point. + */ + this.pointSearch = function (geo, gcs) { + if (m_quadFeature && m_this.m_info) { + let result = m_quadFeature.pointSearch(geo, gcs); + if (result.index.length === 1 && + result.extra && result.extra[result.index[0]].basis && + result.extra[result.index[0]]._quad && + result.extra[result.index[0]]._quad.image) { + const img = result.extra[result.index[0]]._quad.image; + const basis = result.extra[result.index[0]].basis; + const x = Math.floor(basis.x * img.width); + const y = Math.floor(basis.y * img.height); + const canvas = document.createElement('canvas'); + canvas.width = canvas.height = 1; + const context = canvas.getContext('2d'); + context.drawImage(img, x, y, 1, 1, 0, 0, 1, 1); + const pixel = context.getImageData(0, 0, 1, 1).data; + const idx = pixel[0] + pixel[1] * 256 + pixel[2] * 256 * 256; + result = { + index: [idx], + found: [m_this.data()[idx]] + }; + return result; + } + } + return {index: [], found: []}; + }; + + /** + * Given the loaded pixelmap image, create a texture for the colors and a + * quad that will use it. + */ + this._computePixelmap = function () { + var data = m_this.data() || [], + colorFunc = m_this.style.get('color'); + + if (!m_lookupTable) { + m_lookupTable = lookupTable2D(); + m_lookupTable.setTextureUnit(1); + } + let clrLen = Math.max(1, data.length); + const maxWidth = m_lookupTable.maxWidth(); + if (clrLen > maxWidth && clrLen % maxWidth) { + clrLen += maxWidth - (clrLen % maxWidth); + } + const colors = new Uint8Array(clrLen * 4); + data.forEach((d, i) => { + const color = util.convertColor(colorFunc.call(m_this, d, i)); + colors[i * 4] = color.r * 255; + colors[i * 4 + 1] = color.g * 255; + colors[i * 4 + 2] = color.b * 255; + colors[i * 4 + 3] = color.a === undefined ? 255 : (color.a * 255); + }); + m_this.m_info = {colors: colors}; + // check if colors haven't changed + var oldcolors = m_lookupTable.colorTable(); + if (oldcolors && oldcolors.length === colors.length) { + let idx = 0; + for (; idx < colors.length; idx += 1) { + if (colors[idx] !== oldcolors[idx]) { + break; + } + } + if (idx === colors.length) { + return; + } + } + m_lookupTable.colorTable(colors); + /* If we haven't made a quad feature, make one now */ + if (!m_quadFeature) { + m_quadFeature = m_this.layer().createFeature('quad', { + selectionAPI: false, + gcs: m_this.gcs(), + visible: m_this.visible(undefined, true) + }); + m_this.dependentFeatures([m_quadFeature]); + m_quadFeature.setShader('image_fragment', fragmentShader); + m_quadFeature._hookBuild = (prog) => { + const lutSampler = new vgl.uniform(vgl.GL.INT, 'lutSampler'); + lutSampler.set(m_lookupTable.textureUnit()); + prog.addUniform(lutSampler); + const lutWidth = new vgl.uniform(vgl.GL.INT, 'lutWidth'); + lutWidth.set(m_lookupTable.width); + prog.addUniform(lutWidth); + const lutHeight = new vgl.uniform(vgl.GL.INT, 'lutHeight'); + lutHeight.set(m_lookupTable.height); + prog.addUniform(lutHeight); + }; + m_quadFeature._hookRenderImageQuads = (renderState, quads) => { + quads.forEach((quad) => { + if (quad.image && quad.texture && !quad.texture.nearestPixel()) { + quad.texture.setNearestPixel(true); + } + }); + m_lookupTable.bind(renderState, quads); + }; + m_quadFeature.style({ + image: m_this.m_srcImage, + position: m_this.style.get('position')}) + .data([{}]) + .draw(); + } + }; + + /** + * Destroy. Deletes the associated quadFeature. + * + * @returns {this} + */ + this._exit = function () { + if (m_quadFeature && m_this.layer()) { + m_this.layer().deleteFeature(m_quadFeature); + m_quadFeature = null; + m_this.dependentFeatures([]); + } + s_exit(); + return m_this; + }; + + this._init(arg); + return this; +}; + +inherit(webgl_pixelmapFeature, pixelmapFeature); + +// Now register it +registerFeature('webgl', 'pixelmap', webgl_pixelmapFeature); +module.exports = webgl_pixelmapFeature; diff --git a/src/webgl/quadFeature.js b/src/webgl/quadFeature.js index ef3392ec79..a571ffde04 100644 --- a/src/webgl/quadFeature.js +++ b/src/webgl/quadFeature.js @@ -158,7 +158,7 @@ var webgl_quadFeature = function (arg) { * Build this feature. */ this._build = function () { - var mapper, mat, prog, srctex, unicrop, unicropsource, geom, context; + var mapper, mat, prog, srctex, unicrop, unicropsource, geom, context, sampler2d; if (!m_this.position()) { return; @@ -183,6 +183,10 @@ var webgl_quadFeature = function (arg) { prog.addUniform(new vgl.projectionUniform('projectionMatrix')); prog.addUniform(new vgl.floatUniform('opacity', 1.0)); prog.addUniform(new vgl.floatUniform('zOffset', 0.0)); + /* Use texture unit 0 */ + sampler2d = new vgl.uniform(vgl.GL.INT, 'sampler2d'); + sampler2d.set(0); + prog.addUniform(sampler2d); context = m_this.renderer()._glContext(); unicrop = new vgl.uniform(context.FLOAT_VEC2, 'crop'); unicrop.set([1.0, 1.0]); @@ -194,6 +198,9 @@ var webgl_quadFeature = function (arg) { context.VERTEX_SHADER, context, vertexShaderImage)); prog.addShader(vgl.getCachedShader( context.FRAGMENT_SHADER, context, fragmentShaderImage)); + if (m_this._hookBuild) { + m_this._hookBuild(prog); + } mat.addAttribute(prog); mat.addAttribute(new vgl.blend()); /* This is similar to vgl.planeSource */ @@ -355,6 +362,9 @@ var webgl_quadFeature = function (arg) { cropsrc = {x0: 0, y0: 0, x1: 1, y1: 1}, quadcropsrc, w, h, quadw, quadh; + if (m_this._hookRenderImageQuads) { + m_this._hookRenderImageQuads(renderState, m_quads.imgQuads); + } context.bindBuffer(context.ARRAY_BUFFER, m_glBuffers.imgQuadsPosition); $.each(m_quads.imgQuads, function (idx, quad) { if (!quad.image) { @@ -450,6 +460,27 @@ var webgl_quadFeature = function (arg) { m_this.modified(); }; + /** + * Set the image or color vertex or fragment shader. + * + * @param {string} shaderType One of `image_vertex`, `image_fragment`, + * `color_vertex`, or `color_fragment`. + * @param {string} shaderCode The shader program. + * @returns {this} The class instance on success, undefined in an unknown + * shaderType was specified. + */ + this.setShader = function (shaderType, shaderCode) { + switch (shaderType) { + case 'image_vertex': vertexShaderImage = shaderCode; break; + case 'image_fragment': fragmentShaderImage = shaderCode; break; + case 'color_vertex': vertexShaderColor = shaderCode; break; + case 'color_fragment': fragmentShaderColor = shaderCode; break; + default: + return; + } + return m_this; + }; + /** * Destroy. */ diff --git a/tests/cases/pixelmapFeature.js b/tests/cases/pixelmapFeature.js index ac4d443bc7..b79730bc08 100644 --- a/tests/cases/pixelmapFeature.js +++ b/tests/cases/pixelmapFeature.js @@ -1,12 +1,16 @@ -// Test geo.pixelmapFeature and geo.canvas.pixelmapFeature +// Test geo.pixelmapFeature, geo.canvas.pixelmapFeature, geo.webgl.pixelmapFeature /* globals Image */ +var $ = require('jquery'); var geo = require('../test-utils').geo; var createMap = require('../test-utils').createMap; -var $ = require('jquery'); +var destroyMap = require('../test-utils').destroyMap; var waitForIt = require('../test-utils').waitForIt; var logCanvas2D = require('../test-utils').logCanvas2D; +var mockWebglRenderer = geo.util.mockWebglRenderer; +var restoreWebglRenderer = geo.util.restoreWebglRenderer; +var vgl = require('vgl'); describe('geo.pixelmapFeature', function () { 'use strict'; @@ -73,7 +77,7 @@ describe('geo.pixelmapFeature', function () { var map, layer, pixelmap; map = createMap(); layer = map.createLayer('feature', {renderer: 'canvas'}); - pixelmap = geo.pixelmapFeature({layer: layer}); + pixelmap = geo.canvas.pixelmapFeature({layer: layer}); pixelmap._init({ position: position, url: testImage @@ -87,7 +91,7 @@ describe('geo.pixelmapFeature', function () { var map, layer, pixelmap; map = createMap(); layer = map.createLayer('feature', {renderer: 'canvas'}); - pixelmap = geo.pixelmapFeature({layer: layer}); + pixelmap = geo.canvas.pixelmapFeature({layer: layer}); pixelmap._init({ position: position, url: testImage @@ -111,7 +115,7 @@ describe('geo.pixelmapFeature', function () { map = createMap(); layer = map.createLayer('feature', {renderer: 'canvas'}); - pixelmap = geo.pixelmapFeature({layer: layer}); + pixelmap = geo.canvas.pixelmapFeature({layer: layer}); pixelmap._init({ position: position, url: testImage @@ -332,4 +336,72 @@ describe('geo.pixelmapFeature', function () { window._canvasLog.counts.drawImage >= (counts.drawImage || 0) + 1; }); }); + + /* This is a basic integration test of geo.webgl.pixelmapFeature. */ + describe('geo.webgl.pixelmapFeature', function () { + var map, layer, pixelmap, buildTime, glCounts; + it('basic usage', function () { + mockWebglRenderer(); + map = createMap(); + layer = map.createLayer('feature', {renderer: 'webgl'}); + pixelmap = layer.createFeature('pixelmap', { + position: position, + url: testImage + }); + /* Trigger rerendering */ + pixelmap.data(['a', 'b', 'c', 'd', 'e', 'f']); + buildTime = pixelmap.buildTime().timestamp(); + glCounts = $.extend({}, vgl.mockCounts()); + map.draw(); + expect(buildTime).not.toEqual(pixelmap.buildTime().timestamp()); + }); + waitForIt('next render webgl A', function () { + return vgl.mockCounts().createProgram >= (glCounts.createProgram || 0) + 1; + }); + it('Minimal update', function () { + pixelmap.modified(); + glCounts = $.extend({}, vgl.mockCounts()); + pixelmap.draw(); + }); + waitForIt('next render webgl B', function () { + return vgl.mockCounts().drawArrays >= (glCounts.drawArrays || 0) + 1; + }); + it('Heavier update', function () { + var colorFunc = function (d, i) { + return i & 1 ? 'red' : 'blue'; + }; + pixelmap.color(colorFunc); + glCounts = $.extend({}, vgl.mockCounts()); + pixelmap.draw(); + }); + waitForIt('next render webgl C', function () { + return vgl.mockCounts().drawArrays >= (glCounts.drawArrays || 0) + 1; + }); + it('pointSearch', function () { + var pt = pixelmap.pointSearch({x: -135, y: 65}); + expect(pt).toEqual({index: [1], found: ['b']}); + pt = pixelmap.pointSearch({x: -145, y: 65}); + expect(pt).toEqual({index: [], found: []}); + pt = pixelmap.pointSearch({x: -65, y: 15}); + expect(pt).toEqual({index: [2], found: ['c']}); + }); + it('Change data', function () { + glCounts = $.extend({}, vgl.mockCounts()); + pixelmap.data(new Array(5000).fill(0)).draw(); + }); + waitForIt('next render webgl D', function () { + return vgl.mockCounts().drawArrays >= (glCounts.drawArrays || 0) + 1; + }); + it('Data without change', function () { + glCounts = $.extend({}, vgl.mockCounts()); + pixelmap.data(new Array(5000).fill(0)).draw(); + }); + waitForIt('next render webgl E', function () { + return vgl.mockCounts().drawArrays >= (glCounts.drawArrays || 0) + 1; + }); + it('_exit', function () { + destroyMap(); + restoreWebglRenderer(); + }); + }); }); diff --git a/tests/cases/quadFeature.js b/tests/cases/quadFeature.js index 8a939255be..a48fa2e979 100644 --- a/tests/cases/quadFeature.js +++ b/tests/cases/quadFeature.js @@ -574,6 +574,20 @@ describe('geo.quadFeature', function () { destroyMap(); restoreWebglRenderer(); }); + + it('setShader', function () { + mockWebglRenderer(); + var map, layer, quad; + map = createMap(); + layer = map.createLayer('feature', {renderer: 'webgl'}); + quad = geo.quadFeature.create(layer); + ['image_vertex', 'image_fragment', 'color_vertex', 'color_fragment'].forEach((shaderType) => { + expect(quad.setShader(shaderType, 'shader placeholder')).toBe(quad); + }); + expect(quad.setShader('unknown', 'shader placeholder')).toBe(undefined); + destroyMap(); + restoreWebglRenderer(); + }); }); /* This is a basic integration test of geo.canvas.quadFeature. */ diff --git a/webpack.base.config.js b/webpack.base.config.js index 95972662b6..0b4787b8ac 100644 --- a/webpack.base.config.js +++ b/webpack.base.config.js @@ -60,6 +60,7 @@ module.exports = { use: [{ loader: 'babel-loader', options: { + cacheDirectory: true, presets: [['@babel/preset-env', { targets: 'defaults, PhantomJS 2.1' }]] @@ -72,7 +73,12 @@ module.exports = { path.resolve('examples'), path.resolve('tutorials') ], - use: ['babel-loader'] + use: [{ + loader: 'babel-loader', + options: { + cacheDirectory: true + } + }] }, { test: /\.styl$/, use: [ From 19fb2f742a9e0a1de88a8cad09e0f59d8ee9acc3 Mon Sep 17 00:00:00 2001 From: David Manthey Date: Fri, 21 Jan 2022 11:49:50 -0500 Subject: [PATCH 2/2] Add a pixelmap tutorial. This mimics the example. --- tutorials/pixelmap/index.pug | 93 +++++++++++++++++++++++++++++++ tutorials/pixelmap/thumb.jpg | Bin 0 -> 132156 bytes tutorials/pixelmap/tutorial.json | 10 ++++ 3 files changed, 103 insertions(+) create mode 100644 tutorials/pixelmap/index.pug create mode 100644 tutorials/pixelmap/thumb.jpg create mode 100644 tutorials/pixelmap/tutorial.json diff --git a/tutorials/pixelmap/index.pug b/tutorials/pixelmap/index.pug new file mode 100644 index 0000000000..b0c70db544 --- /dev/null +++ b/tutorials/pixelmap/index.pug @@ -0,0 +1,93 @@ +extends ../common/index.pug + +block mainTutorial + :markdown-it + # Tutorial - Pixelmap + + A pixelmap is a way of representing categorical data. It uses a lossless + image where, instead of the pixels representing colors, they represent + category indices. This is usually compactly represented as a integer split + across the red, green, and blue channels, where the category index is + computed as `(red value) + (green value * 256) + (blue value * 65536)`. + + As with other features in GeoJS, the image can either be geospatial, in + pixel coordinates, or in an arbitrary space. For this tutorial, a map of + the United States is used where the categories are the individual states. + + First, let's create our map and add a base map and a feature layer that + supports a pixelmap feature. + + +codeblock('javascript', 1). + var map = geo.map({ + node: '#map', + center: {x: -98.58333, y: 39.83333}, + zoom: 4, + }); + map.createLayer('osm'); + var layer = map.createLayer('feature', { + features: ['pixelmap'], + opacity: 0.65 // let the base map show through + }); + + :markdown-it + Then load some data. In addition to a PNG with an image with the category + data, there is a sample JSON file which lists the categories. We load the + category data asynchronously, and use [promise chain](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises) + to chain up the following steps. + +codeblock('javascript', 2, 1). + var promise = Promise.resolve($.ajax({ + url: '../../examples/pixelmap/pixelmap.json' + })); + + :markdown-it + Once the data is loaded, we create the pixelmap feature. + + +codeblock('javascript', 3, 2, true). + var pixelmap; + promise.then(function (data) { + pixelmap = layer.createFeature('pixelmap', { + url: '../../examples/pixelmap/pixelmap.png', + position: {ul: {x: -180, y: 71.471178}, lr: {x: -60, y: 13.759032}}, + color: function (d, idx) { + // Always set index 0 to transparent. Other indices are set based on + // the data value + var color = {r: 0, g: 0, b: 0, a: 0}; + if (idx && d && d.value) { + color = d.value === 'R' ? 'red' : 'blue'; + } + return color; + } + }); + pixelmap.data(data); + pixelmap.draw(); + }); + + :markdown-it + We can dynamically change our data based on where the user clicks. When + the user left clicks, cycle through three states. A right click clears the + state. + + +codeblock('javascript', 4, 3). + // once again, wait don't do this unless the data is loaded + promise.then(function (data) { + pixelmap.geoOn(geo.event.feature.mouseclick, function (evt) { + var data = pixelmap.data(); + if (!data) { + return; + } + if (data[evt.index] === undefined) { + data[evt.index] = {}; + } + var val = data[evt.index].value; + if (evt.mouse.buttonsDown.left) { + var cycle = {D: 'R', R: '', '': 'D'}; + val = cycle[cycle[val] !== undefined ? val : '']; + } else if (evt.mouse.buttonsDown.right) { + val = ''; + } + if (val !== data[evt.index].value) { + data[evt.index].value = val; + pixelmap.data(data).draw(); + } + }); + }); diff --git a/tutorials/pixelmap/thumb.jpg b/tutorials/pixelmap/thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..90a6c423c01ef6028877c0610121758d7bc9cee8 GIT binary patch literal 132156 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

3mN;T%`cHC` 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 VWUD>ipeCwwb