From 24e4f41452edd70023e52c4f62b04b506a72e22e Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 1 Jul 2019 09:44:37 +0200 Subject: [PATCH 1/4] Use size property from the frameState instead of creating new array --- src/ol/renderer/webgl/PointsLayer.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/ol/renderer/webgl/PointsLayer.js b/src/ol/renderer/webgl/PointsLayer.js index 6f430792c5..7f88108688 100644 --- a/src/ol/renderer/webgl/PointsLayer.js +++ b/src/ol/renderer/webgl/PointsLayer.js @@ -565,11 +565,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { * @param {import("../../PluggableMap.js").FrameState} frameState current frame state */ renderHitDetection(frameState) { - const width = frameState.size[0]; - const height = frameState.size[1]; - const size = [width, height]; - - this.hitRenderTarget_.setSize(size); + this.hitRenderTarget_.setSize(frameState.size); this.helper.useProgram(this.hitProgram_); this.helper.prepareDrawToRenderTarget(frameState, this.hitRenderTarget_, true); From ed340d7e2c2e625d5b63ef4a2be7b9e6657fdc75 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 1 Jul 2019 10:00:55 +0200 Subject: [PATCH 2/4] Remove unused 'resolution' uniform from fragment shader --- src/ol/layer/Heatmap.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/ol/layer/Heatmap.js b/src/ol/layer/Heatmap.js index f45cf084b9..8600259861 100644 --- a/src/ol/layer/Heatmap.js +++ b/src/ol/layer/Heatmap.js @@ -207,7 +207,6 @@ class Heatmap extends VectorLayer { }`, fragmentShader: ` precision mediump float; - uniform float u_resolution; uniform float u_blurSlope; varying vec2 v_texCoord; @@ -226,10 +225,7 @@ class Heatmap extends VectorLayer { }.bind(this), u_blurSlope: function() { return this.get(Property.RADIUS) / Math.max(1, this.get(Property.BLUR)); - }.bind(this), - u_resolution: function(frameState) { - return frameState.viewState.resolution; - } + }.bind(this) }, postProcesses: [ { From bb35a037048df2fd6759d956db703c33ea5d1039 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Mon, 1 Jul 2019 10:05:41 +0200 Subject: [PATCH 3/4] Don't rotate the points of the heatmap layer --- src/ol/layer/Heatmap.js | 8 +------- src/ol/renderer/webgl/PointsLayer.js | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/ol/layer/Heatmap.js b/src/ol/layer/Heatmap.js index 8600259861..bbdd760b67 100644 --- a/src/ol/layer/Heatmap.js +++ b/src/ol/layer/Heatmap.js @@ -183,24 +183,18 @@ class Heatmap extends VectorLayer { precision mediump float; attribute vec2 a_position; attribute vec2 a_texCoord; - attribute float a_rotateWithView; attribute vec2 a_offsets; attribute float a_opacity; uniform mat4 u_projectionMatrix; uniform mat4 u_offsetScaleMatrix; - uniform mat4 u_offsetRotateMatrix; uniform float u_size; varying vec2 v_texCoord; varying float v_opacity; void main(void) { - mat4 offsetMatrix = u_offsetScaleMatrix; - if (a_rotateWithView == 1.0) { - offsetMatrix = u_offsetScaleMatrix * u_offsetRotateMatrix; - } - vec4 offsets = offsetMatrix * vec4(a_offsets, 0.0, 0.0); + vec4 offsets = u_offsetScaleMatrix * vec4(a_offsets, 0.0, 0.0); gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets * u_size; v_texCoord = a_texCoord; v_opacity = a_opacity; diff --git a/src/ol/renderer/webgl/PointsLayer.js b/src/ol/renderer/webgl/PointsLayer.js index 7f88108688..cb282f0046 100644 --- a/src/ol/renderer/webgl/PointsLayer.js +++ b/src/ol/renderer/webgl/PointsLayer.js @@ -111,7 +111,7 @@ const HIT_FRAGMENT_SHADER = ` * source to compute the opacity of the quad on screen (from 0 to 1). This is only done on source change. * Note: this is multiplied with the color of the point which can also have an alpha value < 1. * @property {function(import("../../Feature").default):boolean} [rotateWithViewCallback] Will be called on every feature in the - * source to compute whether the quad on screen must stay upwards (`false`) or follow the view rotation (`true`). + * source to compute whether the quad on screen must stay upwards (`false`) or follow the view rotation (`true`). Default is `false`. * This is only done on source change. * @property {HTMLCanvasElement|HTMLImageElement|ImageData} [texture] Texture to use on points. `texCoordCallback` and `sizeCallback` * must be defined for this to have any effect. From 73032db3457181d16e8bdfb675c2e33f3c4cd7c8 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 3 Jul 2019 08:16:37 +0200 Subject: [PATCH 4/4] Remove unused 'v_screenCoord' from fragment shader --- src/ol/layer/Heatmap.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ol/layer/Heatmap.js b/src/ol/layer/Heatmap.js index bbdd760b67..6399b51286 100644 --- a/src/ol/layer/Heatmap.js +++ b/src/ol/layer/Heatmap.js @@ -230,7 +230,6 @@ class Heatmap extends VectorLayer { uniform sampler2D u_gradientTexture; varying vec2 v_texCoord; - varying vec2 v_screenCoord; void main() { vec4 color = texture2D(u_image, v_texCoord);