From e8c8c32cf318189032a31492b6651c0812913ad6 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 8 Feb 2018 09:06:45 +0100 Subject: [PATCH 1/9] Fix WebGL shader location in Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4b6a442712..6608d92031 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ SRC_GLSL := $(shell find src -type f -name '*.glsl') SRC_SHADER_JS := $(patsubst %shader.glsl,%shader.js,$(SRC_GLSL)) -SRC_SHADERLOCATIONS_JS := $(patsubst %shader.glsl,%shader/locations.js,$(SRC_GLSL)) +SRC_SHADERLOCATIONS_JS := $(patsubst %shader.glsl,%shader/Locations.js,$(SRC_GLSL)) .PHONY: shaders shaders: $(SRC_SHADER_JS) $(SRC_SHADERLOCATIONS_JS) From 5f44d5e8e2245e28953930b4a6e76c6f787f2764 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 8 Feb 2018 09:29:14 +0100 Subject: [PATCH 2/9] Fix indentation in shaderlocations.mustache --- src/ol/webgl/shaderlocations.mustache | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ol/webgl/shaderlocations.mustache b/src/ol/webgl/shaderlocations.mustache index 53553b326f..cc30274475 100644 --- a/src/ol/webgl/shaderlocations.mustache +++ b/src/ol/webgl/shaderlocations.mustache @@ -16,7 +16,7 @@ import {DEBUG_WEBGL} from '../../../index.js'; * @type {WebGLUniformLocation} */ this.{{originalName}} = gl.getUniformLocation( - program, DEBUG_WEBGL ? '{{originalName}}' : '{{shortName}}'); + program, DEBUG_WEBGL ? '{{originalName}}' : '{{shortName}}'); {{/uniforms}} {{#attributes}} @@ -24,7 +24,7 @@ import {DEBUG_WEBGL} from '../../../index.js'; * @type {number} */ this.{{originalName}} = gl.getAttribLocation( - program, DEBUG_WEBGL ? '{{originalName}}' : '{{shortName}}'); + program, DEBUG_WEBGL ? '{{originalName}}' : '{{shortName}}'); {{/attributes}} }; From 106059329de4de140272c72dd30c1d38006856f3 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 8 Feb 2018 12:36:32 +0100 Subject: [PATCH 3/9] Fix module path in the shader templates --- src/ol/webgl/shader.mustache | 8 ++++---- src/ol/webgl/shaderlocations.mustache | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ol/webgl/shader.mustache b/src/ol/webgl/shader.mustache index 4e224c0dce..347e4f2c9d 100644 --- a/src/ol/webgl/shader.mustache +++ b/src/ol/webgl/shader.mustache @@ -1,10 +1,10 @@ // This file is automatically generated, do not edit. // Run `make shaders` to generate, and commit the result. -import {DEBUG_WEBGL} from '../../index.js'; -import _ol_webgl_Fragment_ from '../../webgl/Fragment.js'; -import _ol_webgl_Vertex_ from '../../webgl/Vertex.js'; -var {{namespace}} = {}; +import {DEBUG_WEBGL} from '../../../index.js'; +import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; +import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; +const {{namespace}} = {}; {{namespace}}.fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? 'precision mediump float;\n{{{originalFragmentSource}}}' : diff --git a/src/ol/webgl/shaderlocations.mustache b/src/ol/webgl/shaderlocations.mustache index cc30274475..8d2f9e3f8e 100644 --- a/src/ol/webgl/shaderlocations.mustache +++ b/src/ol/webgl/shaderlocations.mustache @@ -1,7 +1,7 @@ // This file is automatically generated, do not edit // Run `make shaders` to generate, and commit the result. -import {DEBUG_WEBGL} from '../../../index.js'; +import {DEBUG_WEBGL} from '../../../../index.js'; /** * @constructor @@ -9,7 +9,7 @@ import {DEBUG_WEBGL} from '../../../index.js'; * @param {WebGLProgram} program Program. * @struct */ -{{namespace}}_Locations_ = function(gl, program) { +const {{namespace}}Locations_ = function(gl, program) { {{#uniforms}} /** @@ -28,4 +28,4 @@ import {DEBUG_WEBGL} from '../../../index.js'; {{/attributes}} }; -export default {{namespace}}_Locations_; +export default {{namespace}}Locations_; From 2bf252ab0d844ed5171969da5a96da9b5c10bb33 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 8 Feb 2018 13:42:39 +0100 Subject: [PATCH 4/9] Add MODULE variable in the glsl file --- src/ol/render/webgl/circlereplay/defaultshader.glsl | 1 + src/ol/render/webgl/linestringreplay/defaultshader.glsl | 1 + src/ol/render/webgl/polygonreplay/defaultshader.glsl | 1 + src/ol/render/webgl/texturereplay/defaultshader.glsl | 1 + src/ol/renderer/webgl/defaultmapshader.glsl | 1 + src/ol/renderer/webgl/tilelayershader.glsl | 1 + src/ol/webgl/shader.mustache | 3 +++ src/ol/webgl/shaderlocations.mustache | 3 +++ tasks/glslunit.js | 5 +++++ 9 files changed, 17 insertions(+) diff --git a/src/ol/render/webgl/circlereplay/defaultshader.glsl b/src/ol/render/webgl/circlereplay/defaultshader.glsl index c68cceb08f..2fe5ee79e0 100644 --- a/src/ol/render/webgl/circlereplay/defaultshader.glsl +++ b/src/ol/render/webgl/circlereplay/defaultshader.glsl @@ -1,4 +1,5 @@ //! NAMESPACE=_ol_render_webgl_circlereplay_defaultshader_ +//! MODULE=ol/render/webgl/circlereplay/defaultshader //! COMMON diff --git a/src/ol/render/webgl/linestringreplay/defaultshader.glsl b/src/ol/render/webgl/linestringreplay/defaultshader.glsl index b04d05cdc3..276f84b3e0 100644 --- a/src/ol/render/webgl/linestringreplay/defaultshader.glsl +++ b/src/ol/render/webgl/linestringreplay/defaultshader.glsl @@ -1,4 +1,5 @@ //! NAMESPACE=_ol_render_webgl_linestringreplay_defaultshader_ +//! MODULE=ol/render/webgl/linestringreplay/defaultshader //! COMMON diff --git a/src/ol/render/webgl/polygonreplay/defaultshader.glsl b/src/ol/render/webgl/polygonreplay/defaultshader.glsl index 6e0ded8d5a..1e82284337 100644 --- a/src/ol/render/webgl/polygonreplay/defaultshader.glsl +++ b/src/ol/render/webgl/polygonreplay/defaultshader.glsl @@ -1,4 +1,5 @@ //! NAMESPACE=_ol_render_webgl_polygonreplay_defaultshader_ +//! MODULE=ol/render/webgl/polygonreplay/defaultshader //! COMMON diff --git a/src/ol/render/webgl/texturereplay/defaultshader.glsl b/src/ol/render/webgl/texturereplay/defaultshader.glsl index affbff08be..3194d70419 100644 --- a/src/ol/render/webgl/texturereplay/defaultshader.glsl +++ b/src/ol/render/webgl/texturereplay/defaultshader.glsl @@ -1,4 +1,5 @@ //! NAMESPACE=_ol_render_webgl_texturereplay_defaultshader_ +//! MODULE=ol/render/webgl/texturereplay/defaultshader //! COMMON diff --git a/src/ol/renderer/webgl/defaultmapshader.glsl b/src/ol/renderer/webgl/defaultmapshader.glsl index 6621e9cf22..54d2f6924e 100644 --- a/src/ol/renderer/webgl/defaultmapshader.glsl +++ b/src/ol/renderer/webgl/defaultmapshader.glsl @@ -1,4 +1,5 @@ //! NAMESPACE=_ol_renderer_webgl_defaultmapshader_ +//! MODULE=ol/renderer/webgl/defaultmapshader //! COMMON diff --git a/src/ol/renderer/webgl/tilelayershader.glsl b/src/ol/renderer/webgl/tilelayershader.glsl index 59b9aa04c8..46441e85d5 100644 --- a/src/ol/renderer/webgl/tilelayershader.glsl +++ b/src/ol/renderer/webgl/tilelayershader.glsl @@ -1,4 +1,5 @@ //! NAMESPACE=_ol_renderer_webgl_tilelayershader_ +//! MODULE=ol/renderer/webgl/tilelayershader //! COMMON diff --git a/src/ol/webgl/shader.mustache b/src/ol/webgl/shader.mustache index 347e4f2c9d..1809eaa6d5 100644 --- a/src/ol/webgl/shader.mustache +++ b/src/ol/webgl/shader.mustache @@ -1,3 +1,6 @@ +/** + * @module {{{module}}} + */ // This file is automatically generated, do not edit. // Run `make shaders` to generate, and commit the result. diff --git a/src/ol/webgl/shaderlocations.mustache b/src/ol/webgl/shaderlocations.mustache index 8d2f9e3f8e..4eeeca9f26 100644 --- a/src/ol/webgl/shaderlocations.mustache +++ b/src/ol/webgl/shaderlocations.mustache @@ -1,3 +1,6 @@ +/** + * @module {{{module}}}/Locations + */ // This file is automatically generated, do not edit // Run `make shaders` to generate, and commit the result. diff --git a/tasks/glslunit.js b/tasks/glslunit.js index a81342c9a9..992a268421 100644 --- a/tasks/glslunit.js +++ b/tasks/glslunit.js @@ -67,6 +67,11 @@ function main(argv) { json.namespace = m[1]; return; } + m = line.match(/\/\/!\s+MODULE=(\S+)\s*$/); + if (m) { + json.module = m[1]; + return; + } m = line.match(/\/\/!\s+COMMON\s*$/); if (m) { block = 'common'; From 83d530e1815ec36eed2c76296f15352bb55d7bc0 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 8 Feb 2018 14:52:23 +0100 Subject: [PATCH 5/9] Named exports from WebGL shaders --- src/ol/render/webgl/CircleReplay.js | 6 +++--- src/ol/render/webgl/LineStringReplay.js | 6 +++--- src/ol/render/webgl/PolygonReplay.js | 6 +++--- src/ol/render/webgl/TextureReplay.js | 6 +++--- src/ol/render/webgl/circlereplay/defaultshader.js | 10 +++++----- .../webgl/circlereplay/defaultshader/Locations.js | 2 ++ src/ol/render/webgl/linestringreplay/defaultshader.js | 10 +++++----- .../webgl/linestringreplay/defaultshader/Locations.js | 2 ++ src/ol/render/webgl/polygonreplay/defaultshader.js | 10 +++++----- .../webgl/polygonreplay/defaultshader/Locations.js | 2 ++ src/ol/render/webgl/texturereplay/defaultshader.js | 10 +++++----- .../webgl/texturereplay/defaultshader/Locations.js | 2 ++ src/ol/renderer/webgl/Layer.js | 6 +++--- src/ol/renderer/webgl/TileLayer.js | 6 +++--- src/ol/renderer/webgl/defaultmapshader.js | 10 +++++----- src/ol/renderer/webgl/defaultmapshader/Locations.js | 2 ++ src/ol/renderer/webgl/tilelayershader.js | 10 +++++----- src/ol/renderer/webgl/tilelayershader/Locations.js | 2 ++ src/ol/webgl/shader.mustache | 7 ++----- test/spec/ol/render/webgl/circlereplay.test.js | 6 ++---- test/spec/ol/render/webgl/linestringreplay.test.js | 6 ++---- test/spec/ol/render/webgl/polygonreplay.test.js | 6 ++---- test/spec/ol/render/webgl/texturereplay.test.js | 6 ++---- 23 files changed, 70 insertions(+), 69 deletions(-) diff --git a/src/ol/render/webgl/CircleReplay.js b/src/ol/render/webgl/CircleReplay.js index 9ef8ce8e98..7a63e31be3 100644 --- a/src/ol/render/webgl/CircleReplay.js +++ b/src/ol/render/webgl/CircleReplay.js @@ -7,7 +7,7 @@ import {asArray} from '../../color.js'; import {intersects} from '../../extent.js'; import {isEmpty} from '../../obj.js'; import _ol_geom_flat_transform_ from '../../geom/flat/transform.js'; -import _ol_render_webgl_circlereplay_defaultshader_ from '../webgl/circlereplay/defaultshader.js'; +import {fragment, vertex} from '../webgl/circlereplay/defaultshader.js'; import _ol_render_webgl_circlereplay_defaultshader_Locations_ from '../webgl/circlereplay/defaultshader/Locations.js'; import WebGLReplay from '../webgl/Replay.js'; import _ol_render_webgl_ from '../webgl.js'; @@ -196,8 +196,8 @@ WebGLCircleReplay.prototype.getDeleteResourcesFunction = function(context) { */ WebGLCircleReplay.prototype.setUpProgram = function(gl, context, size, pixelRatio) { // get the program - const fragmentShader = _ol_render_webgl_circlereplay_defaultshader_.fragment; - const vertexShader = _ol_render_webgl_circlereplay_defaultshader_.vertex; + const fragmentShader = fragment; + const vertexShader = vertex; const program = context.getProgram(fragmentShader, vertexShader); // get the locations diff --git a/src/ol/render/webgl/LineStringReplay.js b/src/ol/render/webgl/LineStringReplay.js index 2c82962e2c..ff05e32008 100644 --- a/src/ol/render/webgl/LineStringReplay.js +++ b/src/ol/render/webgl/LineStringReplay.js @@ -11,7 +11,7 @@ import {lineStringIsClosed} from '../../geom/flat/topology.js'; import {isEmpty} from '../../obj.js'; import _ol_render_webgl_ from '../webgl.js'; import WebGLReplay from '../webgl/Replay.js'; -import _ol_render_webgl_linestringreplay_defaultshader_ from '../webgl/linestringreplay/defaultshader.js'; +import {fragment, vertex} from '../webgl/linestringreplay/defaultshader.js'; import _ol_render_webgl_linestringreplay_defaultshader_Locations_ from '../webgl/linestringreplay/defaultshader/Locations.js'; import _ol_webgl_ from '../../webgl.js'; import WebGLBuffer from '../../webgl/Buffer.js'; @@ -439,8 +439,8 @@ WebGLLineStringReplay.prototype.getDeleteResourcesFunction = function(context) { */ WebGLLineStringReplay.prototype.setUpProgram = function(gl, context, size, pixelRatio) { // get the program - const fragmentShader = _ol_render_webgl_linestringreplay_defaultshader_.fragment; - const vertexShader = _ol_render_webgl_linestringreplay_defaultshader_.vertex; + const fragmentShader = fragment; + const vertexShader = vertex; const program = context.getProgram(fragmentShader, vertexShader); // get the locations diff --git a/src/ol/render/webgl/PolygonReplay.js b/src/ol/render/webgl/PolygonReplay.js index df776b8525..8ee6df7b54 100644 --- a/src/ol/render/webgl/PolygonReplay.js +++ b/src/ol/render/webgl/PolygonReplay.js @@ -9,7 +9,7 @@ import {isEmpty} from '../../obj.js'; import {linearRingContainsXY} from '../../geom/flat/contains.js'; import _ol_geom_flat_orient_ from '../../geom/flat/orient.js'; import _ol_geom_flat_transform_ from '../../geom/flat/transform.js'; -import _ol_render_webgl_polygonreplay_defaultshader_ from '../webgl/polygonreplay/defaultshader.js'; +import {fragment, vertex} from '../webgl/polygonreplay/defaultshader.js'; import _ol_render_webgl_polygonreplay_defaultshader_Locations_ from '../webgl/polygonreplay/defaultshader/Locations.js'; import WebGLLineStringReplay from '../webgl/LineStringReplay.js'; import WebGLReplay from '../webgl/Replay.js'; @@ -873,8 +873,8 @@ WebGLPolygonReplay.prototype.getDeleteResourcesFunction = function(context) { */ WebGLPolygonReplay.prototype.setUpProgram = function(gl, context, size, pixelRatio) { // get the program - const fragmentShader = _ol_render_webgl_polygonreplay_defaultshader_.fragment; - const vertexShader = _ol_render_webgl_polygonreplay_defaultshader_.vertex; + const fragmentShader = fragment; + const vertexShader = vertex; const program = context.getProgram(fragmentShader, vertexShader); // get the locations diff --git a/src/ol/render/webgl/TextureReplay.js b/src/ol/render/webgl/TextureReplay.js index c84d54b622..33656ba3a1 100644 --- a/src/ol/render/webgl/TextureReplay.js +++ b/src/ol/render/webgl/TextureReplay.js @@ -4,7 +4,7 @@ import {getUid, inherits} from '../../index.js'; import {intersects} from '../../extent.js'; import {isEmpty} from '../../obj.js'; -import _ol_render_webgl_texturereplay_defaultshader_ from '../webgl/texturereplay/defaultshader.js'; +import {fragment, vertex} from '../webgl/texturereplay/defaultshader.js'; import _ol_render_webgl_texturereplay_defaultshader_Locations_ from '../webgl/texturereplay/defaultshader/Locations.js'; import WebGLReplay from '../webgl/Replay.js'; import _ol_webgl_ from '../../webgl.js'; @@ -271,8 +271,8 @@ WebGLTextureReplay.prototype.createTextures = function(textures, images, texture */ WebGLTextureReplay.prototype.setUpProgram = function(gl, context, size, pixelRatio) { // get the program - const fragmentShader = _ol_render_webgl_texturereplay_defaultshader_.fragment; - const vertexShader = _ol_render_webgl_texturereplay_defaultshader_.vertex; + const fragmentShader = fragment; + const vertexShader = vertex; const program = context.getProgram(fragmentShader, vertexShader); // get the locations diff --git a/src/ol/render/webgl/circlereplay/defaultshader.js b/src/ol/render/webgl/circlereplay/defaultshader.js index 97962c7221..556f239cde 100644 --- a/src/ol/render/webgl/circlereplay/defaultshader.js +++ b/src/ol/render/webgl/circlereplay/defaultshader.js @@ -1,17 +1,17 @@ +/** + * @module ol/render/webgl/circlereplay/defaultshader + */ // This file is automatically generated, do not edit. // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../../index.js'; import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; -const _ol_render_webgl_circlereplay_defaultshader_ = {}; -_ol_render_webgl_circlereplay_defaultshader_.fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_center;\nvarying vec2 v_offset;\nvarying float v_halfWidth;\nvarying float v_pixelRatio;\n\n\n\nuniform float u_opacity;\nuniform vec4 u_fillColor;\nuniform vec4 u_strokeColor;\nuniform vec2 u_size;\n\nvoid main(void) {\n vec2 windowCenter = vec2((v_center.x + 1.0) / 2.0 * u_size.x * v_pixelRatio,\n (v_center.y + 1.0) / 2.0 * u_size.y * v_pixelRatio);\n vec2 windowOffset = vec2((v_offset.x + 1.0) / 2.0 * u_size.x * v_pixelRatio,\n (v_offset.y + 1.0) / 2.0 * u_size.y * v_pixelRatio);\n float radius = length(windowCenter - windowOffset);\n float dist = length(windowCenter - gl_FragCoord.xy);\n if (dist > radius + v_halfWidth) {\n if (u_strokeColor.a == 0.0) {\n gl_FragColor = u_fillColor;\n } else {\n gl_FragColor = u_strokeColor;\n }\n gl_FragColor.a = gl_FragColor.a - (dist - (radius + v_halfWidth));\n } else if (u_fillColor.a == 0.0) {\n // Hooray, no fill, just stroke. We can use real antialiasing.\n gl_FragColor = u_strokeColor;\n if (dist < radius - v_halfWidth) {\n gl_FragColor.a = gl_FragColor.a - (radius - v_halfWidth - dist);\n }\n } else {\n gl_FragColor = u_fillColor;\n float strokeDist = radius - v_halfWidth;\n float antialias = 2.0 * v_pixelRatio;\n if (dist > strokeDist) {\n gl_FragColor = u_strokeColor;\n } else if (dist >= strokeDist - antialias) {\n float step = smoothstep(strokeDist - antialias, strokeDist, dist);\n gl_FragColor = mix(u_fillColor, u_strokeColor, step);\n }\n }\n gl_FragColor.a = gl_FragColor.a * u_opacity;\n if (gl_FragColor.a <= 0.0) {\n discard;\n }\n}\n' : 'precision mediump float;varying vec2 a;varying vec2 b;varying float c;varying float d;uniform float m;uniform vec4 n;uniform vec4 o;uniform vec2 p;void main(void){vec2 windowCenter=vec2((a.x+1.0)/2.0*p.x*d,(a.y+1.0)/2.0*p.y*d);vec2 windowOffset=vec2((b.x+1.0)/2.0*p.x*d,(b.y+1.0)/2.0*p.y*d);float radius=length(windowCenter-windowOffset);float dist=length(windowCenter-gl_FragCoord.xy);if(dist>radius+c){if(o.a==0.0){gl_FragColor=n;}else{gl_FragColor=o;}gl_FragColor.a=gl_FragColor.a-(dist-(radius+c));}else if(n.a==0.0){gl_FragColor=o;if(diststrokeDist){gl_FragColor=o;}else if(dist>=strokeDist-antialias){float step=smoothstep(strokeDist-antialias,strokeDist,dist);gl_FragColor=mix(n,o,step);}} gl_FragColor.a=gl_FragColor.a*m;if(gl_FragColor.a<=0.0){discard;}}'); -_ol_render_webgl_circlereplay_defaultshader_.vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? 'varying vec2 v_center;\nvarying vec2 v_offset;\nvarying float v_halfWidth;\nvarying float v_pixelRatio;\n\n\nattribute vec2 a_position;\nattribute float a_instruction;\nattribute float a_radius;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_lineWidth;\nuniform float u_pixelRatio;\n\nvoid main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix * u_offsetRotateMatrix;\n v_center = vec4(u_projectionMatrix * vec4(a_position, 0.0, 1.0)).xy;\n v_pixelRatio = u_pixelRatio;\n float lineWidth = u_lineWidth * u_pixelRatio;\n v_halfWidth = lineWidth / 2.0;\n if (lineWidth == 0.0) {\n lineWidth = 2.0 * u_pixelRatio;\n }\n vec2 offset;\n // Radius with anitaliasing (roughly).\n float radius = a_radius + 3.0 * u_pixelRatio;\n // Until we get gl_VertexID in WebGL, we store an instruction.\n if (a_instruction == 0.0) {\n // Offsetting the edges of the triangle by lineWidth / 2 is necessary, however\n // we should also leave some space for the antialiasing, thus we offset by lineWidth.\n offset = vec2(-1.0, 1.0);\n } else if (a_instruction == 1.0) {\n offset = vec2(-1.0, -1.0);\n } else if (a_instruction == 2.0) {\n offset = vec2(1.0, -1.0);\n } else {\n offset = vec2(1.0, 1.0);\n }\n\n gl_Position = u_projectionMatrix * vec4(a_position + offset * radius, 0.0, 1.0) +\n offsetMatrix * vec4(offset * lineWidth, 0.0, 0.0);\n v_offset = vec4(u_projectionMatrix * vec4(a_position.x + a_radius, a_position.y,\n 0.0, 1.0)).xy;\n\n if (distance(v_center, v_offset) > 20000.0) {\n gl_Position = vec4(v_center, 0.0, 1.0);\n }\n}\n\n\n' : 'varying vec2 a;varying vec2 b;varying float c;varying float d;attribute vec2 e;attribute float f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;uniform float k;uniform float l;void main(void){mat4 offsetMatrix=i*j;a=vec4(h*vec4(e,0.0,1.0)).xy;d=l;float lineWidth=k*l;c=lineWidth/2.0;if(lineWidth==0.0){lineWidth=2.0*l;}vec2 offset;float radius=g+3.0*l;//Until we get gl_VertexID in WebGL,we store an instruction.if(f==0.0){//Offsetting the edges of the triangle by lineWidth/2 is necessary,however//we should also leave some space for the antialiasing,thus we offset by lineWidth.offset=vec2(-1.0,1.0);}else if(f==1.0){offset=vec2(-1.0,-1.0);}else if(f==2.0){offset=vec2(1.0,-1.0);}else{offset=vec2(1.0,1.0);}gl_Position=h*vec4(e+offset*radius,0.0,1.0)+offsetMatrix*vec4(offset*lineWidth,0.0,0.0);b=vec4(h*vec4(e.x+g,e.y,0.0,1.0)).xy;if(distance(a,b)>20000.0){gl_Position=vec4(a,0.0,1.0);}}'); - -export default _ol_render_webgl_circlereplay_defaultshader_; diff --git a/src/ol/render/webgl/circlereplay/defaultshader/Locations.js b/src/ol/render/webgl/circlereplay/defaultshader/Locations.js index 67f67f9a6c..4810156a10 100644 --- a/src/ol/render/webgl/circlereplay/defaultshader/Locations.js +++ b/src/ol/render/webgl/circlereplay/defaultshader/Locations.js @@ -2,6 +2,8 @@ * @module ol/render/webgl/circlereplay/defaultshader/Locations */ // This file is automatically generated, do not edit +// Run `make shaders` to generate, and commit the result. + import {DEBUG_WEBGL} from '../../../../index.js'; /** diff --git a/src/ol/render/webgl/linestringreplay/defaultshader.js b/src/ol/render/webgl/linestringreplay/defaultshader.js index bfd67e3b89..ebf26597af 100644 --- a/src/ol/render/webgl/linestringreplay/defaultshader.js +++ b/src/ol/render/webgl/linestringreplay/defaultshader.js @@ -1,17 +1,17 @@ +/** + * @module ol/render/webgl/linestringreplay/defaultshader + */ // This file is automatically generated, do not edit. // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../../index.js'; import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; -const _ol_render_webgl_linestringreplay_defaultshader_ = {}; -_ol_render_webgl_linestringreplay_defaultshader_.fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? 'precision mediump float;\nvarying float v_round;\nvarying vec2 v_roundVertex;\nvarying float v_halfWidth;\n\n\n\nuniform float u_opacity;\nuniform vec4 u_color;\nuniform vec2 u_size;\nuniform float u_pixelRatio;\n\nvoid main(void) {\n if (v_round > 0.0) {\n vec2 windowCoords = vec2((v_roundVertex.x + 1.0) / 2.0 * u_size.x * u_pixelRatio,\n (v_roundVertex.y + 1.0) / 2.0 * u_size.y * u_pixelRatio);\n if (length(windowCoords - gl_FragCoord.xy) > v_halfWidth * u_pixelRatio) {\n discard;\n }\n }\n gl_FragColor = u_color;\n float alpha = u_color.a * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n' : 'precision mediump float;varying float a;varying vec2 aVertex;varying float c;uniform float m;uniform vec4 n;uniform vec2 o;uniform float p;void main(void){if(a>0.0){vec2 windowCoords=vec2((aVertex.x+1.0)/2.0*o.x*p,(aVertex.y+1.0)/2.0*o.y*p);if(length(windowCoords-gl_FragCoord.xy)>c*p){discard;}} gl_FragColor=n;float alpha=n.a*m;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}'); -_ol_render_webgl_linestringreplay_defaultshader_.vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? 'varying float v_round;\nvarying vec2 v_roundVertex;\nvarying float v_halfWidth;\n\n\nattribute vec2 a_lastPos;\nattribute vec2 a_position;\nattribute vec2 a_nextPos;\nattribute float a_direction;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_lineWidth;\nuniform float u_miterLimit;\n\nbool nearlyEquals(in float value, in float ref) {\n float epsilon = 0.000000000001;\n return value >= ref - epsilon && value <= ref + epsilon;\n}\n\nvoid alongNormal(out vec2 offset, in vec2 nextP, in float turnDir, in float direction) {\n vec2 dirVect = nextP - a_position;\n vec2 normal = normalize(vec2(-turnDir * dirVect.y, turnDir * dirVect.x));\n offset = u_lineWidth / 2.0 * normal * direction;\n}\n\nvoid miterUp(out vec2 offset, out float round, in bool isRound, in float direction) {\n float halfWidth = u_lineWidth / 2.0;\n vec2 tangent = normalize(normalize(a_nextPos - a_position) + normalize(a_position - a_lastPos));\n vec2 normal = vec2(-tangent.y, tangent.x);\n vec2 dirVect = a_nextPos - a_position;\n vec2 tmpNormal = normalize(vec2(-dirVect.y, dirVect.x));\n float miterLength = abs(halfWidth / dot(normal, tmpNormal));\n offset = normal * direction * miterLength;\n round = 0.0;\n if (isRound) {\n round = 1.0;\n } else if (miterLength > u_miterLimit + u_lineWidth) {\n offset = halfWidth * tmpNormal * direction;\n }\n}\n\nbool miterDown(out vec2 offset, in vec4 projPos, in mat4 offsetMatrix, in float direction) {\n bool degenerate = false;\n vec2 tangent = normalize(normalize(a_nextPos - a_position) + normalize(a_position - a_lastPos));\n vec2 normal = vec2(-tangent.y, tangent.x);\n vec2 dirVect = a_lastPos - a_position;\n vec2 tmpNormal = normalize(vec2(-dirVect.y, dirVect.x));\n vec2 longOffset, shortOffset, longVertex;\n vec4 shortProjVertex;\n float halfWidth = u_lineWidth / 2.0;\n if (length(a_nextPos - a_position) > length(a_lastPos - a_position)) {\n longOffset = tmpNormal * direction * halfWidth;\n shortOffset = normalize(vec2(dirVect.y, -dirVect.x)) * direction * halfWidth;\n longVertex = a_nextPos;\n shortProjVertex = u_projectionMatrix * vec4(a_lastPos, 0.0, 1.0);\n } else {\n shortOffset = tmpNormal * direction * halfWidth;\n longOffset = normalize(vec2(dirVect.y, -dirVect.x)) * direction * halfWidth;\n longVertex = a_lastPos;\n shortProjVertex = u_projectionMatrix * vec4(a_nextPos, 0.0, 1.0);\n }\n //Intersection algorithm based on theory by Paul Bourke (http://paulbourke.net/geometry/pointlineplane/).\n vec4 p1 = u_projectionMatrix * vec4(longVertex, 0.0, 1.0) + offsetMatrix * vec4(longOffset, 0.0, 0.0);\n vec4 p2 = projPos + offsetMatrix * vec4(longOffset, 0.0, 0.0);\n vec4 p3 = shortProjVertex + offsetMatrix * vec4(-shortOffset, 0.0, 0.0);\n vec4 p4 = shortProjVertex + offsetMatrix * vec4(shortOffset, 0.0, 0.0);\n float denom = (p4.y - p3.y) * (p2.x - p1.x) - (p4.x - p3.x) * (p2.y - p1.y);\n float firstU = ((p4.x - p3.x) * (p1.y - p3.y) - (p4.y - p3.y) * (p1.x - p3.x)) / denom;\n float secondU = ((p2.x - p1.x) * (p1.y - p3.y) - (p2.y - p1.y) * (p1.x - p3.x)) / denom;\n float epsilon = 0.000000000001;\n if (firstU > epsilon && firstU < 1.0 - epsilon && secondU > epsilon && secondU < 1.0 - epsilon) {\n shortProjVertex.x = p1.x + firstU * (p2.x - p1.x);\n shortProjVertex.y = p1.y + firstU * (p2.y - p1.y);\n offset = shortProjVertex.xy;\n degenerate = true;\n } else {\n float miterLength = abs(halfWidth / dot(normal, tmpNormal));\n offset = normal * direction * miterLength;\n }\n return degenerate;\n}\n\nvoid squareCap(out vec2 offset, out float round, in bool isRound, in vec2 nextP,\n in float turnDir, in float direction) {\n round = 0.0;\n vec2 dirVect = a_position - nextP;\n vec2 firstNormal = normalize(dirVect);\n vec2 secondNormal = vec2(turnDir * firstNormal.y * direction, -turnDir * firstNormal.x * direction);\n vec2 hypotenuse = normalize(firstNormal - secondNormal);\n vec2 normal = vec2(turnDir * hypotenuse.y * direction, -turnDir * hypotenuse.x * direction);\n float length = sqrt(v_halfWidth * v_halfWidth * 2.0);\n offset = normal * length;\n if (isRound) {\n round = 1.0;\n }\n}\n\nvoid main(void) {\n bool degenerate = false;\n float direction = float(sign(a_direction));\n mat4 offsetMatrix = u_offsetScaleMatrix * u_offsetRotateMatrix;\n vec2 offset;\n vec4 projPos = u_projectionMatrix * vec4(a_position, 0.0, 1.0);\n bool round = nearlyEquals(mod(a_direction, 2.0), 0.0);\n\n v_round = 0.0;\n v_halfWidth = u_lineWidth / 2.0;\n v_roundVertex = projPos.xy;\n\n if (nearlyEquals(mod(a_direction, 3.0), 0.0) || nearlyEquals(mod(a_direction, 17.0), 0.0)) {\n alongNormal(offset, a_nextPos, 1.0, direction);\n } else if (nearlyEquals(mod(a_direction, 5.0), 0.0) || nearlyEquals(mod(a_direction, 13.0), 0.0)) {\n alongNormal(offset, a_lastPos, -1.0, direction);\n } else if (nearlyEquals(mod(a_direction, 23.0), 0.0)) {\n miterUp(offset, v_round, round, direction);\n } else if (nearlyEquals(mod(a_direction, 19.0), 0.0)) {\n degenerate = miterDown(offset, projPos, offsetMatrix, direction);\n } else if (nearlyEquals(mod(a_direction, 7.0), 0.0)) {\n squareCap(offset, v_round, round, a_nextPos, 1.0, direction);\n } else if (nearlyEquals(mod(a_direction, 11.0), 0.0)) {\n squareCap(offset, v_round, round, a_lastPos, -1.0, direction);\n }\n if (!degenerate) {\n vec4 offsets = offsetMatrix * vec4(offset, 0.0, 0.0);\n gl_Position = projPos + offsets;\n } else {\n gl_Position = vec4(offset, 0.0, 1.0);\n }\n}\n\n\n' : 'varying float a;varying vec2 aVertex;varying float c;attribute vec2 d;attribute vec2 e;attribute vec2 f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;uniform float k;uniform float l;bool nearlyEquals(in float value,in float ref){float epsilon=0.000000000001;return value>=ref-epsilon&&value<=ref+epsilon;}void alongNormal(out vec2 offset,in vec2 nextP,in float turnDir,in float direction){vec2 dirVect=nextP-e;vec2 normal=normalize(vec2(-turnDir*dirVect.y,turnDir*dirVect.x));offset=k/2.0*normal*direction;}void miterUp(out vec2 offset,out float round,in bool isRound,in float direction){float halfWidth=k/2.0;vec2 tangent=normalize(normalize(f-e)+normalize(e-d));vec2 normal=vec2(-tangent.y,tangent.x);vec2 dirVect=f-e;vec2 tmpNormal=normalize(vec2(-dirVect.y,dirVect.x));float miterLength=abs(halfWidth/dot(normal,tmpNormal));offset=normal*direction*miterLength;round=0.0;if(isRound){round=1.0;}else if(miterLength>l+k){offset=halfWidth*tmpNormal*direction;}} bool miterDown(out vec2 offset,in vec4 projPos,in mat4 offsetMatrix,in float direction){bool degenerate=false;vec2 tangent=normalize(normalize(f-e)+normalize(e-d));vec2 normal=vec2(-tangent.y,tangent.x);vec2 dirVect=d-e;vec2 tmpNormal=normalize(vec2(-dirVect.y,dirVect.x));vec2 longOffset,shortOffset,longVertex;vec4 shortProjVertex;float halfWidth=k/2.0;if(length(f-e)>length(d-e)){longOffset=tmpNormal*direction*halfWidth;shortOffset=normalize(vec2(dirVect.y,-dirVect.x))*direction*halfWidth;longVertex=f;shortProjVertex=h*vec4(d,0.0,1.0);}else{shortOffset=tmpNormal*direction*halfWidth;longOffset=normalize(vec2(dirVect.y,-dirVect.x))*direction*halfWidth;longVertex=d;shortProjVertex=h*vec4(f,0.0,1.0);}vec4 p1=h*vec4(longVertex,0.0,1.0)+offsetMatrix*vec4(longOffset,0.0,0.0);vec4 p2=projPos+offsetMatrix*vec4(longOffset,0.0,0.0);vec4 p3=shortProjVertex+offsetMatrix*vec4(-shortOffset,0.0,0.0);vec4 p4=shortProjVertex+offsetMatrix*vec4(shortOffset,0.0,0.0);float denom=(p4.y-p3.y)*(p2.x-p1.x)-(p4.x-p3.x)*(p2.y-p1.y);float firstU=((p4.x-p3.x)*(p1.y-p3.y)-(p4.y-p3.y)*(p1.x-p3.x))/denom;float secondU=((p2.x-p1.x)*(p1.y-p3.y)-(p2.y-p1.y)*(p1.x-p3.x))/denom;float epsilon=0.000000000001;if(firstU>epsilon&&firstU<1.0-epsilon&&secondU>epsilon&&secondU<1.0-epsilon){shortProjVertex.x=p1.x+firstU*(p2.x-p1.x);shortProjVertex.y=p1.y+firstU*(p2.y-p1.y);offset=shortProjVertex.xy;degenerate=true;}else{float miterLength=abs(halfWidth/dot(normal,tmpNormal));offset=normal*direction*miterLength;}return degenerate;}void squareCap(out vec2 offset,out float round,in bool isRound,in vec2 nextP,in float turnDir,in float direction){round=0.0;vec2 dirVect=e-nextP;vec2 firstNormal=normalize(dirVect);vec2 secondNormal=vec2(turnDir*firstNormal.y*direction,-turnDir*firstNormal.x*direction);vec2 hypotenuse=normalize(firstNormal-secondNormal);vec2 normal=vec2(turnDir*hypotenuse.y*direction,-turnDir*hypotenuse.x*direction);float length=sqrt(c*c*2.0);offset=normal*length;if(isRound){round=1.0;}} void main(void){bool degenerate=false;float direction=float(sign(g));mat4 offsetMatrix=i*j;vec2 offset;vec4 projPos=h*vec4(e,0.0,1.0);bool round=nearlyEquals(mod(g,2.0),0.0);a=0.0;c=k/2.0;aVertex=projPos.xy;if(nearlyEquals(mod(g,3.0),0.0)||nearlyEquals(mod(g,17.0),0.0)){alongNormal(offset,f,1.0,direction);}else if(nearlyEquals(mod(g,5.0),0.0)||nearlyEquals(mod(g,13.0),0.0)){alongNormal(offset,d,-1.0,direction);}else if(nearlyEquals(mod(g,23.0),0.0)){miterUp(offset,a,round,direction);}else if(nearlyEquals(mod(g,19.0),0.0)){degenerate=miterDown(offset,projPos,offsetMatrix,direction);}else if(nearlyEquals(mod(g,7.0),0.0)){squareCap(offset,a,round,f,1.0,direction);}else if(nearlyEquals(mod(g,11.0),0.0)){squareCap(offset,a,round,d,-1.0,direction);}if(!degenerate){vec4 offsets=offsetMatrix*vec4(offset,0.0,0.0);gl_Position=projPos+offsets;}else{gl_Position=vec4(offset,0.0,1.0);}}'); - -export default _ol_render_webgl_linestringreplay_defaultshader_; diff --git a/src/ol/render/webgl/linestringreplay/defaultshader/Locations.js b/src/ol/render/webgl/linestringreplay/defaultshader/Locations.js index e84cb17708..d868bd96c6 100644 --- a/src/ol/render/webgl/linestringreplay/defaultshader/Locations.js +++ b/src/ol/render/webgl/linestringreplay/defaultshader/Locations.js @@ -2,6 +2,8 @@ * @module ol/render/webgl/linestringreplay/defaultshader/Locations */ // This file is automatically generated, do not edit +// Run `make shaders` to generate, and commit the result. + import {DEBUG_WEBGL} from '../../../../index.js'; /** diff --git a/src/ol/render/webgl/polygonreplay/defaultshader.js b/src/ol/render/webgl/polygonreplay/defaultshader.js index 260b360c75..76233d9edd 100644 --- a/src/ol/render/webgl/polygonreplay/defaultshader.js +++ b/src/ol/render/webgl/polygonreplay/defaultshader.js @@ -1,17 +1,17 @@ +/** + * @module ol/render/webgl/polygonreplay/defaultshader + */ // This file is automatically generated, do not edit. // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../../index.js'; import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; -const _ol_render_webgl_polygonreplay_defaultshader_ = {}; -_ol_render_webgl_polygonreplay_defaultshader_.fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? 'precision mediump float;\n\n\n\nuniform vec4 u_color;\nuniform float u_opacity;\n\nvoid main(void) {\n gl_FragColor = u_color;\n float alpha = u_color.a * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n' : 'precision mediump float;uniform vec4 e;uniform float f;void main(void){gl_FragColor=e;float alpha=e.a*f;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}'); -_ol_render_webgl_polygonreplay_defaultshader_.vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? '\n\nattribute vec2 a_position;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\n\nvoid main(void) {\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0);\n}\n\n\n' : 'attribute vec2 a;uniform mat4 b;uniform mat4 c;uniform mat4 d;void main(void){gl_Position=b*vec4(a,0.0,1.0);}'); - -export default _ol_render_webgl_polygonreplay_defaultshader_; diff --git a/src/ol/render/webgl/polygonreplay/defaultshader/Locations.js b/src/ol/render/webgl/polygonreplay/defaultshader/Locations.js index 991e479338..7532cf7ba5 100644 --- a/src/ol/render/webgl/polygonreplay/defaultshader/Locations.js +++ b/src/ol/render/webgl/polygonreplay/defaultshader/Locations.js @@ -2,6 +2,8 @@ * @module ol/render/webgl/polygonreplay/defaultshader/Locations */ // This file is automatically generated, do not edit +// Run `make shaders` to generate, and commit the result. + import {DEBUG_WEBGL} from '../../../../index.js'; /** diff --git a/src/ol/render/webgl/texturereplay/defaultshader.js b/src/ol/render/webgl/texturereplay/defaultshader.js index 8401d4c2a1..c1f6339df9 100644 --- a/src/ol/render/webgl/texturereplay/defaultshader.js +++ b/src/ol/render/webgl/texturereplay/defaultshader.js @@ -1,17 +1,17 @@ +/** + * @module ol/render/webgl/texturereplay/defaultshader + */ // This file is automatically generated, do not edit. // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../../index.js'; import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; -const _ol_render_webgl_texturereplay_defaultshader_ = {}; -_ol_render_webgl_texturereplay_defaultshader_.fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_texCoord;\nvarying float v_opacity;\n\nuniform float u_opacity;\nuniform sampler2D u_image;\n\nvoid main(void) {\n vec4 texColor = texture2D(u_image, v_texCoord);\n gl_FragColor.rgb = texColor.rgb;\n float alpha = texColor.a * v_opacity * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n' : 'precision mediump float;varying vec2 a;varying float b;uniform float k;uniform sampler2D l;void main(void){vec4 texColor=texture2D(l,a);gl_FragColor.rgb=texColor.rgb;float alpha=texColor.a*b*k;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}'); -_ol_render_webgl_texturereplay_defaultshader_.vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? 'varying vec2 v_texCoord;\nvarying float v_opacity;\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\nattribute vec2 a_offsets;\nattribute float a_opacity;\nattribute float a_rotateWithView;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\n\nvoid main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix;\n if (a_rotateWithView == 1.0) {\n offsetMatrix = u_offsetScaleMatrix * u_offsetRotateMatrix;\n }\n vec4 offsets = offsetMatrix * vec4(a_offsets, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n v_texCoord = a_texCoord;\n v_opacity = a_opacity;\n}\n\n\n' : 'varying vec2 a;varying float b;attribute vec2 c;attribute vec2 d;attribute vec2 e;attribute float f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;void main(void){mat4 offsetMatrix=i;if(g==1.0){offsetMatrix=i*j;}vec4 offsets=offsetMatrix*vec4(e,0.0,0.0);gl_Position=h*vec4(c,0.0,1.0)+offsets;a=d;b=f;}'); - -export default _ol_render_webgl_texturereplay_defaultshader_; diff --git a/src/ol/render/webgl/texturereplay/defaultshader/Locations.js b/src/ol/render/webgl/texturereplay/defaultshader/Locations.js index 101e687703..7566942692 100644 --- a/src/ol/render/webgl/texturereplay/defaultshader/Locations.js +++ b/src/ol/render/webgl/texturereplay/defaultshader/Locations.js @@ -2,6 +2,8 @@ * @module ol/render/webgl/texturereplay/defaultshader/Locations */ // This file is automatically generated, do not edit +// Run `make shaders` to generate, and commit the result. + import {DEBUG_WEBGL} from '../../../../index.js'; /** diff --git a/src/ol/renderer/webgl/Layer.js b/src/ol/renderer/webgl/Layer.js index 8d767e14ae..432990f51a 100644 --- a/src/ol/renderer/webgl/Layer.js +++ b/src/ol/renderer/webgl/Layer.js @@ -6,7 +6,7 @@ import RenderEvent from '../../render/Event.js'; import RenderEventType from '../../render/EventType.js'; import _ol_render_webgl_Immediate_ from '../../render/webgl/Immediate.js'; import LayerRenderer from '../Layer.js'; -import _ol_renderer_webgl_defaultmapshader_ from '../webgl/defaultmapshader.js'; +import {fragment, vertex} from '../webgl/defaultmapshader.js'; import _ol_renderer_webgl_defaultmapshader_Locations_ from '../webgl/defaultmapshader/Locations.js'; import _ol_transform_ from '../../transform.js'; import {create, fromTransform} from '../../vec/mat4.js'; @@ -148,8 +148,8 @@ WebGLLayerRenderer.prototype.composeFrame = function(frameState, layerState, con const gl = context.getGL(); - const fragmentShader = _ol_renderer_webgl_defaultmapshader_.fragment; - const vertexShader = _ol_renderer_webgl_defaultmapshader_.vertex; + const fragmentShader = fragment; + const vertexShader = vertex; const program = context.getProgram(fragmentShader, vertexShader); diff --git a/src/ol/renderer/webgl/TileLayer.js b/src/ol/renderer/webgl/TileLayer.js index d92d4bebfc..5613965532 100644 --- a/src/ol/renderer/webgl/TileLayer.js +++ b/src/ol/renderer/webgl/TileLayer.js @@ -13,7 +13,7 @@ import {createEmpty, intersects} from '../../extent.js'; import {roundUpToPowerOfTwo} from '../../math.js'; import RendererType from '../Type.js'; import WebGLLayerRenderer from '../webgl/Layer.js'; -import _ol_renderer_webgl_tilelayershader_ from '../webgl/tilelayershader.js'; +import {fragment, vertex} from '../webgl/tilelayershader.js'; import _ol_renderer_webgl_tilelayershader_Locations_ from '../webgl/tilelayershader/Locations.js'; import {toSize} from '../../size.js'; import _ol_transform_ from '../../transform.js'; @@ -35,13 +35,13 @@ const WebGLTileLayerRenderer = function(mapRenderer, tileLayer) { * @private * @type {ol.webgl.Fragment} */ - this.fragmentShader_ = _ol_renderer_webgl_tilelayershader_.fragment; + this.fragmentShader_ = fragment; /** * @private * @type {ol.webgl.Vertex} */ - this.vertexShader_ = _ol_renderer_webgl_tilelayershader_.vertex; + this.vertexShader_ = vertex; /** * @private diff --git a/src/ol/renderer/webgl/defaultmapshader.js b/src/ol/renderer/webgl/defaultmapshader.js index 95ffc98257..2136130c1a 100644 --- a/src/ol/renderer/webgl/defaultmapshader.js +++ b/src/ol/renderer/webgl/defaultmapshader.js @@ -1,17 +1,17 @@ +/** + * @module ol/renderer/webgl/defaultmapshader + */ // This file is automatically generated, do not edit. // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../index.js'; import _ol_webgl_Fragment_ from '../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../webgl/Vertex.js'; -const _ol_renderer_webgl_defaultmapshader_ = {}; -_ol_renderer_webgl_defaultmapshader_.fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_texCoord;\n\n\nuniform float u_opacity;\nuniform sampler2D u_texture;\n\nvoid main(void) {\n vec4 texColor = texture2D(u_texture, v_texCoord);\n gl_FragColor.rgb = texColor.rgb;\n gl_FragColor.a = texColor.a * u_opacity;\n}\n' : 'precision mediump float;varying vec2 a;uniform float f;uniform sampler2D g;void main(void){vec4 texColor=texture2D(g,a);gl_FragColor.rgb=texColor.rgb;gl_FragColor.a=texColor.a*f;}'); -_ol_renderer_webgl_defaultmapshader_.vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? 'varying vec2 v_texCoord;\n\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat4 u_texCoordMatrix;\nuniform mat4 u_projectionMatrix;\n\nvoid main(void) {\n gl_Position = u_projectionMatrix * vec4(a_position, 0., 1.);\n v_texCoord = (u_texCoordMatrix * vec4(a_texCoord, 0., 1.)).st;\n}\n\n\n' : 'varying vec2 a;attribute vec2 b;attribute vec2 c;uniform mat4 d;uniform mat4 e;void main(void){gl_Position=e*vec4(b,0.,1.);a=(d*vec4(c,0.,1.)).st;}'); - -export default _ol_renderer_webgl_defaultmapshader_; diff --git a/src/ol/renderer/webgl/defaultmapshader/Locations.js b/src/ol/renderer/webgl/defaultmapshader/Locations.js index 64ea2e5809..bb1d32974d 100644 --- a/src/ol/renderer/webgl/defaultmapshader/Locations.js +++ b/src/ol/renderer/webgl/defaultmapshader/Locations.js @@ -2,6 +2,8 @@ * @module ol/renderer/webgl/defaultmapshader/Locations */ // This file is automatically generated, do not edit +// Run `make shaders` to generate, and commit the result. + import {DEBUG_WEBGL} from '../../../index.js'; /** diff --git a/src/ol/renderer/webgl/tilelayershader.js b/src/ol/renderer/webgl/tilelayershader.js index d287187297..ba2f364cce 100644 --- a/src/ol/renderer/webgl/tilelayershader.js +++ b/src/ol/renderer/webgl/tilelayershader.js @@ -1,17 +1,17 @@ +/** + * @module ol/renderer/webgl/tilelayershader + */ // This file is automatically generated, do not edit. // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../index.js'; import _ol_webgl_Fragment_ from '../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../webgl/Vertex.js'; -const _ol_renderer_webgl_tilelayershader_ = {}; -_ol_renderer_webgl_tilelayershader_.fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_texCoord;\n\n\nuniform sampler2D u_texture;\n\nvoid main(void) {\n gl_FragColor = texture2D(u_texture, v_texCoord);\n}\n' : 'precision mediump float;varying vec2 a;uniform sampler2D e;void main(void){gl_FragColor=texture2D(e,a);}'); -_ol_renderer_webgl_tilelayershader_.vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? 'varying vec2 v_texCoord;\n\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\nuniform vec4 u_tileOffset;\n\nvoid main(void) {\n gl_Position = vec4(a_position * u_tileOffset.xy + u_tileOffset.zw, 0., 1.);\n v_texCoord = a_texCoord;\n}\n\n\n' : 'varying vec2 a;attribute vec2 b;attribute vec2 c;uniform vec4 d;void main(void){gl_Position=vec4(b*d.xy+d.zw,0.,1.);a=c;}'); - -export default _ol_renderer_webgl_tilelayershader_; diff --git a/src/ol/renderer/webgl/tilelayershader/Locations.js b/src/ol/renderer/webgl/tilelayershader/Locations.js index b5269146d9..0fd4de7813 100644 --- a/src/ol/renderer/webgl/tilelayershader/Locations.js +++ b/src/ol/renderer/webgl/tilelayershader/Locations.js @@ -2,6 +2,8 @@ * @module ol/renderer/webgl/tilelayershader/Locations */ // This file is automatically generated, do not edit +// Run `make shaders` to generate, and commit the result. + import {DEBUG_WEBGL} from '../../../index.js'; /** diff --git a/src/ol/webgl/shader.mustache b/src/ol/webgl/shader.mustache index 1809eaa6d5..038ca5269c 100644 --- a/src/ol/webgl/shader.mustache +++ b/src/ol/webgl/shader.mustache @@ -7,14 +7,11 @@ import {DEBUG_WEBGL} from '../../../index.js'; import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; -const {{namespace}} = {}; -{{namespace}}.fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? 'precision mediump float;\n{{{originalFragmentSource}}}' : 'precision mediump float;{{{fragmentSource}}}'); -{{namespace}}.vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? '{{{originalVertexSource}}}' : '{{{vertexSource}}}'); - -export default {{namespace}}; diff --git a/test/spec/ol/render/webgl/circlereplay.test.js b/test/spec/ol/render/webgl/circlereplay.test.js index 5c9d8ae884..90ca24e9ad 100644 --- a/test/spec/ol/render/webgl/circlereplay.test.js +++ b/test/spec/ol/render/webgl/circlereplay.test.js @@ -2,7 +2,7 @@ import {getUid} from '../../../../../src/ol/index.js'; import Feature from '../../../../../src/ol/Feature.js'; import Circle from '../../../../../src/ol/geom/Circle.js'; import WebGLCircleReplay from '../../../../../src/ol/render/webgl/CircleReplay.js'; -import _ol_render_webgl_circlereplay_defaultshader_ from '../../../../../src/ol/render/webgl/circlereplay/defaultshader.js'; +import {fragment, vertex} from '../../../../../src/ol/render/webgl/circlereplay/defaultshader.js'; import _ol_render_webgl_circlereplay_defaultshader_Locations_ from '../../../../../src/ol/render/webgl/circlereplay/defaultshader/Locations.js'; import Fill from '../../../../../src/ol/style/Fill.js'; import Stroke from '../../../../../src/ol/style/Stroke.js'; @@ -124,9 +124,7 @@ describe('ol.render.webgl.CircleReplay', function() { sinon.spy(context, 'useProgram'); replay.setUpProgram(gl, context, [2, 2], 1); - expect(context.getProgram.calledWithExactly( - _ol_render_webgl_circlereplay_defaultshader_.fragment, - _ol_render_webgl_circlereplay_defaultshader_.vertex)).to.be(true); + expect(context.getProgram.calledWithExactly(fragment, vertex)).to.be(true); expect(context.useProgram.calledOnce).to.be(true); }); diff --git a/test/spec/ol/render/webgl/linestringreplay.test.js b/test/spec/ol/render/webgl/linestringreplay.test.js index 93c264a809..1f3044965a 100644 --- a/test/spec/ol/render/webgl/linestringreplay.test.js +++ b/test/spec/ol/render/webgl/linestringreplay.test.js @@ -3,7 +3,7 @@ import Feature from '../../../../../src/ol/Feature.js'; import LineString from '../../../../../src/ol/geom/LineString.js'; import MultiLineString from '../../../../../src/ol/geom/MultiLineString.js'; import WebGLLineStringReplay from '../../../../../src/ol/render/webgl/LineStringReplay.js'; -import _ol_render_webgl_linestringreplay_defaultshader_ from '../../../../../src/ol/render/webgl/linestringreplay/defaultshader.js'; +import {fragment, vertex} from '../../../../../src/ol/render/webgl/linestringreplay/defaultshader.js'; import _ol_render_webgl_linestringreplay_defaultshader_Locations_ from '../../../../../src/ol/render/webgl/linestringreplay/defaultshader/Locations.js'; import Stroke from '../../../../../src/ol/style/Stroke.js'; @@ -225,9 +225,7 @@ describe('ol.render.webgl.LineStringReplay', function() { sinon.spy(context, 'useProgram'); replay.setUpProgram(gl, context, [2, 2], 1); - expect(context.getProgram.calledWithExactly( - _ol_render_webgl_linestringreplay_defaultshader_.fragment, - _ol_render_webgl_linestringreplay_defaultshader_.vertex)).to.be(true); + expect(context.getProgram.calledWithExactly(fragment, vertex)).to.be(true); expect(context.useProgram.calledOnce).to.be(true); }); diff --git a/test/spec/ol/render/webgl/polygonreplay.test.js b/test/spec/ol/render/webgl/polygonreplay.test.js index 1269adc0ac..38cb4fb5b6 100644 --- a/test/spec/ol/render/webgl/polygonreplay.test.js +++ b/test/spec/ol/render/webgl/polygonreplay.test.js @@ -3,7 +3,7 @@ import Feature from '../../../../../src/ol/Feature.js'; import MultiPolygon from '../../../../../src/ol/geom/MultiPolygon.js'; import Polygon from '../../../../../src/ol/geom/Polygon.js'; import WebGLPolygonReplay from '../../../../../src/ol/render/webgl/PolygonReplay.js'; -import _ol_render_webgl_polygonreplay_defaultshader_ from '../../../../../src/ol/render/webgl/polygonreplay/defaultshader.js'; +import {fragment, vertex} from '../../../../../src/ol/render/webgl/polygonreplay/defaultshader.js'; import _ol_render_webgl_polygonreplay_defaultshader_Locations_ from '../../../../../src/ol/render/webgl/polygonreplay/defaultshader/Locations.js'; import LinkedList from '../../../../../src/ol/structs/LinkedList.js'; import RBush from '../../../../../src/ol/structs/RBush.js'; @@ -346,9 +346,7 @@ describe('ol.render.webgl.PolygonReplay', function() { sinon.spy(context, 'useProgram'); replay.setUpProgram(gl, context, [2, 2], 1); - expect(context.getProgram.calledWithExactly( - _ol_render_webgl_polygonreplay_defaultshader_.fragment, - _ol_render_webgl_polygonreplay_defaultshader_.vertex)).to.be(true); + expect(context.getProgram.calledWithExactly(fragment, vertex)).to.be(true); expect(context.useProgram.calledOnce).to.be(true); }); diff --git a/test/spec/ol/render/webgl/texturereplay.test.js b/test/spec/ol/render/webgl/texturereplay.test.js index 64d298753e..68faa452ac 100644 --- a/test/spec/ol/render/webgl/texturereplay.test.js +++ b/test/spec/ol/render/webgl/texturereplay.test.js @@ -1,5 +1,5 @@ import WebGLTextureReplay from '../../../../../src/ol/render/webgl/TextureReplay.js'; -import _ol_render_webgl_texturereplay_defaultshader_ from '../../../../../src/ol/render/webgl/texturereplay/defaultshader.js'; +import {fragment, vertex} from '../../../../../src/ol/render/webgl/texturereplay/defaultshader.js'; import _ol_render_webgl_texturereplay_defaultshader_Locations_ from '../../../../../src/ol/render/webgl/texturereplay/defaultshader/Locations.js'; describe('ol.render.webgl.TextureReplay', function() { @@ -39,9 +39,7 @@ describe('ol.render.webgl.TextureReplay', function() { sinon.spy(context, 'useProgram'); replay.setUpProgram(gl, context, [2, 2], 1); - expect(context.getProgram.calledWithExactly( - _ol_render_webgl_texturereplay_defaultshader_.fragment, - _ol_render_webgl_texturereplay_defaultshader_.vertex)).to.be(true); + expect(context.getProgram.calledWithExactly(fragment, vertex)).to.be(true); expect(context.useProgram.calledOnce).to.be(true); }); From e25e61c3b77a19ad4f00c6aceb2a40be93940e1e Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 8 Feb 2018 15:13:20 +0100 Subject: [PATCH 6/9] Rename location shader classes And remove the now unneeded NAMESPACE variable --- src/ol/render/webgl/CircleReplay.js | 4 ++-- src/ol/render/webgl/LineStringReplay.js | 4 ++-- src/ol/render/webgl/PolygonReplay.js | 4 ++-- src/ol/render/webgl/TextureReplay.js | 4 ++-- src/ol/render/webgl/circlereplay/defaultshader.glsl | 1 - src/ol/render/webgl/circlereplay/defaultshader/Locations.js | 4 ++-- src/ol/render/webgl/linestringreplay/defaultshader.glsl | 1 - .../render/webgl/linestringreplay/defaultshader/Locations.js | 4 ++-- src/ol/render/webgl/polygonreplay/defaultshader.glsl | 1 - src/ol/render/webgl/polygonreplay/defaultshader/Locations.js | 4 ++-- src/ol/render/webgl/texturereplay/defaultshader.glsl | 1 - src/ol/render/webgl/texturereplay/defaultshader/Locations.js | 4 ++-- src/ol/renderer/webgl/Layer.js | 4 ++-- src/ol/renderer/webgl/TileLayer.js | 4 ++-- src/ol/renderer/webgl/defaultmapshader.glsl | 1 - src/ol/renderer/webgl/defaultmapshader/Locations.js | 4 ++-- src/ol/renderer/webgl/tilelayershader.glsl | 1 - src/ol/renderer/webgl/tilelayershader/Locations.js | 4 ++-- src/ol/webgl/shaderlocations.mustache | 4 ++-- tasks/glslunit.js | 5 ----- test/spec/ol/render/webgl/circlereplay.test.js | 5 ++--- test/spec/ol/render/webgl/linestringreplay.test.js | 5 ++--- test/spec/ol/render/webgl/polygonreplay.test.js | 5 ++--- test/spec/ol/render/webgl/texturereplay.test.js | 5 ++--- 24 files changed, 34 insertions(+), 49 deletions(-) diff --git a/src/ol/render/webgl/CircleReplay.js b/src/ol/render/webgl/CircleReplay.js index 7a63e31be3..f904b24d99 100644 --- a/src/ol/render/webgl/CircleReplay.js +++ b/src/ol/render/webgl/CircleReplay.js @@ -8,7 +8,7 @@ import {intersects} from '../../extent.js'; import {isEmpty} from '../../obj.js'; import _ol_geom_flat_transform_ from '../../geom/flat/transform.js'; import {fragment, vertex} from '../webgl/circlereplay/defaultshader.js'; -import _ol_render_webgl_circlereplay_defaultshader_Locations_ from '../webgl/circlereplay/defaultshader/Locations.js'; +import Locations from '../webgl/circlereplay/defaultshader/Locations.js'; import WebGLReplay from '../webgl/Replay.js'; import _ol_render_webgl_ from '../webgl.js'; import _ol_webgl_ from '../../webgl.js'; @@ -203,7 +203,7 @@ WebGLCircleReplay.prototype.setUpProgram = function(gl, context, size, pixelRati // get the locations let locations; if (!this.defaultLocations_) { - locations = new _ol_render_webgl_circlereplay_defaultshader_Locations_(gl, program); + locations = new Locations(gl, program); this.defaultLocations_ = locations; } else { locations = this.defaultLocations_; diff --git a/src/ol/render/webgl/LineStringReplay.js b/src/ol/render/webgl/LineStringReplay.js index ff05e32008..9adcefc91a 100644 --- a/src/ol/render/webgl/LineStringReplay.js +++ b/src/ol/render/webgl/LineStringReplay.js @@ -12,7 +12,7 @@ import {isEmpty} from '../../obj.js'; import _ol_render_webgl_ from '../webgl.js'; import WebGLReplay from '../webgl/Replay.js'; import {fragment, vertex} from '../webgl/linestringreplay/defaultshader.js'; -import _ol_render_webgl_linestringreplay_defaultshader_Locations_ from '../webgl/linestringreplay/defaultshader/Locations.js'; +import Locations from '../webgl/linestringreplay/defaultshader/Locations.js'; import _ol_webgl_ from '../../webgl.js'; import WebGLBuffer from '../../webgl/Buffer.js'; @@ -446,7 +446,7 @@ WebGLLineStringReplay.prototype.setUpProgram = function(gl, context, size, pixel // get the locations let locations; if (!this.defaultLocations_) { - locations = new _ol_render_webgl_linestringreplay_defaultshader_Locations_(gl, program); + locations = new Locations(gl, program); this.defaultLocations_ = locations; } else { locations = this.defaultLocations_; diff --git a/src/ol/render/webgl/PolygonReplay.js b/src/ol/render/webgl/PolygonReplay.js index 8ee6df7b54..89fd1b4859 100644 --- a/src/ol/render/webgl/PolygonReplay.js +++ b/src/ol/render/webgl/PolygonReplay.js @@ -10,7 +10,7 @@ import {linearRingContainsXY} from '../../geom/flat/contains.js'; import _ol_geom_flat_orient_ from '../../geom/flat/orient.js'; import _ol_geom_flat_transform_ from '../../geom/flat/transform.js'; import {fragment, vertex} from '../webgl/polygonreplay/defaultshader.js'; -import _ol_render_webgl_polygonreplay_defaultshader_Locations_ from '../webgl/polygonreplay/defaultshader/Locations.js'; +import Locations from '../webgl/polygonreplay/defaultshader/Locations.js'; import WebGLLineStringReplay from '../webgl/LineStringReplay.js'; import WebGLReplay from '../webgl/Replay.js'; import _ol_render_webgl_ from '../webgl.js'; @@ -880,7 +880,7 @@ WebGLPolygonReplay.prototype.setUpProgram = function(gl, context, size, pixelRat // get the locations let locations; if (!this.defaultLocations_) { - locations = new _ol_render_webgl_polygonreplay_defaultshader_Locations_(gl, program); + locations = new Locations(gl, program); this.defaultLocations_ = locations; } else { locations = this.defaultLocations_; diff --git a/src/ol/render/webgl/TextureReplay.js b/src/ol/render/webgl/TextureReplay.js index 33656ba3a1..6ffc4a60a2 100644 --- a/src/ol/render/webgl/TextureReplay.js +++ b/src/ol/render/webgl/TextureReplay.js @@ -5,7 +5,7 @@ import {getUid, inherits} from '../../index.js'; import {intersects} from '../../extent.js'; import {isEmpty} from '../../obj.js'; import {fragment, vertex} from '../webgl/texturereplay/defaultshader.js'; -import _ol_render_webgl_texturereplay_defaultshader_Locations_ from '../webgl/texturereplay/defaultshader/Locations.js'; +import Locations from '../webgl/texturereplay/defaultshader/Locations.js'; import WebGLReplay from '../webgl/Replay.js'; import _ol_webgl_ from '../../webgl.js'; import WebGLContext from '../../webgl/Context.js'; @@ -278,7 +278,7 @@ WebGLTextureReplay.prototype.setUpProgram = function(gl, context, size, pixelRat // get the locations let locations; if (!this.defaultLocations) { - locations = new _ol_render_webgl_texturereplay_defaultshader_Locations_(gl, program); + locations = new Locations(gl, program); this.defaultLocations = locations; } else { locations = this.defaultLocations; diff --git a/src/ol/render/webgl/circlereplay/defaultshader.glsl b/src/ol/render/webgl/circlereplay/defaultshader.glsl index 2fe5ee79e0..c8dc0a2aea 100644 --- a/src/ol/render/webgl/circlereplay/defaultshader.glsl +++ b/src/ol/render/webgl/circlereplay/defaultshader.glsl @@ -1,4 +1,3 @@ -//! NAMESPACE=_ol_render_webgl_circlereplay_defaultshader_ //! MODULE=ol/render/webgl/circlereplay/defaultshader diff --git a/src/ol/render/webgl/circlereplay/defaultshader/Locations.js b/src/ol/render/webgl/circlereplay/defaultshader/Locations.js index 4810156a10..3e1ee02d66 100644 --- a/src/ol/render/webgl/circlereplay/defaultshader/Locations.js +++ b/src/ol/render/webgl/circlereplay/defaultshader/Locations.js @@ -12,7 +12,7 @@ import {DEBUG_WEBGL} from '../../../../index.js'; * @param {WebGLProgram} program Program. * @struct */ -const _ol_render_webgl_circlereplay_defaultshader_Locations_ = function(gl, program) { +const Locations = function(gl, program) { /** * @type {WebGLUniformLocation} @@ -87,4 +87,4 @@ const _ol_render_webgl_circlereplay_defaultshader_Locations_ = function(gl, prog program, DEBUG_WEBGL ? 'a_radius' : 'g'); }; -export default _ol_render_webgl_circlereplay_defaultshader_Locations_; +export default Locations; diff --git a/src/ol/render/webgl/linestringreplay/defaultshader.glsl b/src/ol/render/webgl/linestringreplay/defaultshader.glsl index 276f84b3e0..99ec8c0b02 100644 --- a/src/ol/render/webgl/linestringreplay/defaultshader.glsl +++ b/src/ol/render/webgl/linestringreplay/defaultshader.glsl @@ -1,4 +1,3 @@ -//! NAMESPACE=_ol_render_webgl_linestringreplay_defaultshader_ //! MODULE=ol/render/webgl/linestringreplay/defaultshader diff --git a/src/ol/render/webgl/linestringreplay/defaultshader/Locations.js b/src/ol/render/webgl/linestringreplay/defaultshader/Locations.js index d868bd96c6..e29d4783e0 100644 --- a/src/ol/render/webgl/linestringreplay/defaultshader/Locations.js +++ b/src/ol/render/webgl/linestringreplay/defaultshader/Locations.js @@ -12,7 +12,7 @@ import {DEBUG_WEBGL} from '../../../../index.js'; * @param {WebGLProgram} program Program. * @struct */ -const _ol_render_webgl_linestringreplay_defaultshader_Locations_ = function(gl, program) { +const Locations = function(gl, program) { /** * @type {WebGLUniformLocation} @@ -93,4 +93,4 @@ const _ol_render_webgl_linestringreplay_defaultshader_Locations_ = function(gl, program, DEBUG_WEBGL ? 'a_direction' : 'g'); }; -export default _ol_render_webgl_linestringreplay_defaultshader_Locations_; +export default Locations; diff --git a/src/ol/render/webgl/polygonreplay/defaultshader.glsl b/src/ol/render/webgl/polygonreplay/defaultshader.glsl index 1e82284337..aefd8ec686 100644 --- a/src/ol/render/webgl/polygonreplay/defaultshader.glsl +++ b/src/ol/render/webgl/polygonreplay/defaultshader.glsl @@ -1,4 +1,3 @@ -//! NAMESPACE=_ol_render_webgl_polygonreplay_defaultshader_ //! MODULE=ol/render/webgl/polygonreplay/defaultshader diff --git a/src/ol/render/webgl/polygonreplay/defaultshader/Locations.js b/src/ol/render/webgl/polygonreplay/defaultshader/Locations.js index 7532cf7ba5..c62e58c5fb 100644 --- a/src/ol/render/webgl/polygonreplay/defaultshader/Locations.js +++ b/src/ol/render/webgl/polygonreplay/defaultshader/Locations.js @@ -12,7 +12,7 @@ import {DEBUG_WEBGL} from '../../../../index.js'; * @param {WebGLProgram} program Program. * @struct */ -const _ol_render_webgl_polygonreplay_defaultshader_Locations_ = function(gl, program) { +const Locations = function(gl, program) { /** * @type {WebGLUniformLocation} @@ -51,4 +51,4 @@ const _ol_render_webgl_polygonreplay_defaultshader_Locations_ = function(gl, pro program, DEBUG_WEBGL ? 'a_position' : 'a'); }; -export default _ol_render_webgl_polygonreplay_defaultshader_Locations_; +export default Locations; diff --git a/src/ol/render/webgl/texturereplay/defaultshader.glsl b/src/ol/render/webgl/texturereplay/defaultshader.glsl index 3194d70419..5a1664125a 100644 --- a/src/ol/render/webgl/texturereplay/defaultshader.glsl +++ b/src/ol/render/webgl/texturereplay/defaultshader.glsl @@ -1,4 +1,3 @@ -//! NAMESPACE=_ol_render_webgl_texturereplay_defaultshader_ //! MODULE=ol/render/webgl/texturereplay/defaultshader diff --git a/src/ol/render/webgl/texturereplay/defaultshader/Locations.js b/src/ol/render/webgl/texturereplay/defaultshader/Locations.js index 7566942692..48ce0bf31f 100644 --- a/src/ol/render/webgl/texturereplay/defaultshader/Locations.js +++ b/src/ol/render/webgl/texturereplay/defaultshader/Locations.js @@ -12,7 +12,7 @@ import {DEBUG_WEBGL} from '../../../../index.js'; * @param {WebGLProgram} program Program. * @struct */ -const _ol_render_webgl_texturereplay_defaultshader_Locations_ = function(gl, program) { +const Locations = function(gl, program) { /** * @type {WebGLUniformLocation} @@ -75,4 +75,4 @@ const _ol_render_webgl_texturereplay_defaultshader_Locations_ = function(gl, pro program, DEBUG_WEBGL ? 'a_rotateWithView' : 'g'); }; -export default _ol_render_webgl_texturereplay_defaultshader_Locations_; +export default Locations; diff --git a/src/ol/renderer/webgl/Layer.js b/src/ol/renderer/webgl/Layer.js index 432990f51a..6dd9fca800 100644 --- a/src/ol/renderer/webgl/Layer.js +++ b/src/ol/renderer/webgl/Layer.js @@ -7,7 +7,7 @@ import RenderEventType from '../../render/EventType.js'; import _ol_render_webgl_Immediate_ from '../../render/webgl/Immediate.js'; import LayerRenderer from '../Layer.js'; import {fragment, vertex} from '../webgl/defaultmapshader.js'; -import _ol_renderer_webgl_defaultmapshader_Locations_ from '../webgl/defaultmapshader/Locations.js'; +import Locations from '../webgl/defaultmapshader/Locations.js'; import _ol_transform_ from '../../transform.js'; import {create, fromTransform} from '../../vec/mat4.js'; import _ol_webgl_ from '../../webgl.js'; @@ -155,7 +155,7 @@ WebGLLayerRenderer.prototype.composeFrame = function(frameState, layerState, con let locations; if (!this.defaultLocations_) { - locations = new _ol_renderer_webgl_defaultmapshader_Locations_(gl, program); + locations = new Locations(gl, program); this.defaultLocations_ = locations; } else { locations = this.defaultLocations_; diff --git a/src/ol/renderer/webgl/TileLayer.js b/src/ol/renderer/webgl/TileLayer.js index 5613965532..362abab353 100644 --- a/src/ol/renderer/webgl/TileLayer.js +++ b/src/ol/renderer/webgl/TileLayer.js @@ -14,7 +14,7 @@ import {roundUpToPowerOfTwo} from '../../math.js'; import RendererType from '../Type.js'; import WebGLLayerRenderer from '../webgl/Layer.js'; import {fragment, vertex} from '../webgl/tilelayershader.js'; -import _ol_renderer_webgl_tilelayershader_Locations_ from '../webgl/tilelayershader/Locations.js'; +import Locations from '../webgl/tilelayershader/Locations.js'; import {toSize} from '../../size.js'; import _ol_transform_ from '../../transform.js'; import _ol_webgl_ from '../../webgl.js'; @@ -223,7 +223,7 @@ WebGLTileLayerRenderer.prototype.prepareFrame = function(frameState, layerState, const program = context.getProgram(this.fragmentShader_, this.vertexShader_); context.useProgram(program); if (!this.locations_) { - this.locations_ = new _ol_renderer_webgl_tilelayershader_Locations_(gl, program); + this.locations_ = new Locations(gl, program); } context.bindBuffer(_ol_webgl_.ARRAY_BUFFER, this.renderArrayBuffer_); diff --git a/src/ol/renderer/webgl/defaultmapshader.glsl b/src/ol/renderer/webgl/defaultmapshader.glsl index 54d2f6924e..f1009886da 100644 --- a/src/ol/renderer/webgl/defaultmapshader.glsl +++ b/src/ol/renderer/webgl/defaultmapshader.glsl @@ -1,4 +1,3 @@ -//! NAMESPACE=_ol_renderer_webgl_defaultmapshader_ //! MODULE=ol/renderer/webgl/defaultmapshader diff --git a/src/ol/renderer/webgl/defaultmapshader/Locations.js b/src/ol/renderer/webgl/defaultmapshader/Locations.js index bb1d32974d..1a7845528c 100644 --- a/src/ol/renderer/webgl/defaultmapshader/Locations.js +++ b/src/ol/renderer/webgl/defaultmapshader/Locations.js @@ -12,7 +12,7 @@ import {DEBUG_WEBGL} from '../../../index.js'; * @param {WebGLProgram} program Program. * @struct */ -const _ol_renderer_webgl_defaultmapshader_Locations_ = function(gl, program) { +const Locations = function(gl, program) { /** * @type {WebGLUniformLocation} @@ -51,4 +51,4 @@ const _ol_renderer_webgl_defaultmapshader_Locations_ = function(gl, program) { program, DEBUG_WEBGL ? 'a_texCoord' : 'c'); }; -export default _ol_renderer_webgl_defaultmapshader_Locations_; +export default Locations; diff --git a/src/ol/renderer/webgl/tilelayershader.glsl b/src/ol/renderer/webgl/tilelayershader.glsl index 46441e85d5..121e760359 100644 --- a/src/ol/renderer/webgl/tilelayershader.glsl +++ b/src/ol/renderer/webgl/tilelayershader.glsl @@ -1,4 +1,3 @@ -//! NAMESPACE=_ol_renderer_webgl_tilelayershader_ //! MODULE=ol/renderer/webgl/tilelayershader diff --git a/src/ol/renderer/webgl/tilelayershader/Locations.js b/src/ol/renderer/webgl/tilelayershader/Locations.js index 0fd4de7813..db9123e41c 100644 --- a/src/ol/renderer/webgl/tilelayershader/Locations.js +++ b/src/ol/renderer/webgl/tilelayershader/Locations.js @@ -12,7 +12,7 @@ import {DEBUG_WEBGL} from '../../../index.js'; * @param {WebGLProgram} program Program. * @struct */ -const _ol_renderer_webgl_tilelayershader_Locations_ = function(gl, program) { +const Locations = function(gl, program) { /** * @type {WebGLUniformLocation} @@ -39,4 +39,4 @@ const _ol_renderer_webgl_tilelayershader_Locations_ = function(gl, program) { program, DEBUG_WEBGL ? 'a_texCoord' : 'c'); }; -export default _ol_renderer_webgl_tilelayershader_Locations_; +export default Locations; diff --git a/src/ol/webgl/shaderlocations.mustache b/src/ol/webgl/shaderlocations.mustache index 4eeeca9f26..61277e2951 100644 --- a/src/ol/webgl/shaderlocations.mustache +++ b/src/ol/webgl/shaderlocations.mustache @@ -12,7 +12,7 @@ import {DEBUG_WEBGL} from '../../../../index.js'; * @param {WebGLProgram} program Program. * @struct */ -const {{namespace}}Locations_ = function(gl, program) { +const Locations = function(gl, program) { {{#uniforms}} /** @@ -31,4 +31,4 @@ const {{namespace}}Locations_ = function(gl, program) { {{/attributes}} }; -export default {{namespace}}Locations_; +export default Locations; diff --git a/tasks/glslunit.js b/tasks/glslunit.js index 992a268421..9ed85826dd 100644 --- a/tasks/glslunit.js +++ b/tasks/glslunit.js @@ -62,11 +62,6 @@ function main(argv) { let m, shortName; lines.forEach(function(line, i) { if (line.indexOf('//!') == 0) { - m = line.match(/\/\/!\s+NAMESPACE=(\S+)\s*$/); - if (m) { - json.namespace = m[1]; - return; - } m = line.match(/\/\/!\s+MODULE=(\S+)\s*$/); if (m) { json.module = m[1]; diff --git a/test/spec/ol/render/webgl/circlereplay.test.js b/test/spec/ol/render/webgl/circlereplay.test.js index 90ca24e9ad..9754ba7853 100644 --- a/test/spec/ol/render/webgl/circlereplay.test.js +++ b/test/spec/ol/render/webgl/circlereplay.test.js @@ -3,7 +3,7 @@ import Feature from '../../../../../src/ol/Feature.js'; import Circle from '../../../../../src/ol/geom/Circle.js'; import WebGLCircleReplay from '../../../../../src/ol/render/webgl/CircleReplay.js'; import {fragment, vertex} from '../../../../../src/ol/render/webgl/circlereplay/defaultshader.js'; -import _ol_render_webgl_circlereplay_defaultshader_Locations_ from '../../../../../src/ol/render/webgl/circlereplay/defaultshader/Locations.js'; +import Locations from '../../../../../src/ol/render/webgl/circlereplay/defaultshader/Locations.js'; import Fill from '../../../../../src/ol/style/Fill.js'; import Stroke from '../../../../../src/ol/style/Stroke.js'; @@ -115,8 +115,7 @@ describe('ol.render.webgl.CircleReplay', function() { it('returns the locations used by the shaders', function() { const locations = replay.setUpProgram(gl, context, [2, 2], 1); - expect(locations).to.be.a( - _ol_render_webgl_circlereplay_defaultshader_Locations_); + expect(locations).to.be.a(Locations); }); it('gets and compiles the shaders', function() { diff --git a/test/spec/ol/render/webgl/linestringreplay.test.js b/test/spec/ol/render/webgl/linestringreplay.test.js index 1f3044965a..a9d07ce36d 100644 --- a/test/spec/ol/render/webgl/linestringreplay.test.js +++ b/test/spec/ol/render/webgl/linestringreplay.test.js @@ -4,7 +4,7 @@ import LineString from '../../../../../src/ol/geom/LineString.js'; import MultiLineString from '../../../../../src/ol/geom/MultiLineString.js'; import WebGLLineStringReplay from '../../../../../src/ol/render/webgl/LineStringReplay.js'; import {fragment, vertex} from '../../../../../src/ol/render/webgl/linestringreplay/defaultshader.js'; -import _ol_render_webgl_linestringreplay_defaultshader_Locations_ from '../../../../../src/ol/render/webgl/linestringreplay/defaultshader/Locations.js'; +import Locations from '../../../../../src/ol/render/webgl/linestringreplay/defaultshader/Locations.js'; import Stroke from '../../../../../src/ol/style/Stroke.js'; describe('ol.render.webgl.LineStringReplay', function() { @@ -216,8 +216,7 @@ describe('ol.render.webgl.LineStringReplay', function() { it('returns the locations used by the shaders', function() { const locations = replay.setUpProgram(gl, context, [2, 2], 1); - expect(locations).to.be.a( - _ol_render_webgl_linestringreplay_defaultshader_Locations_); + expect(locations).to.be.a(Locations); }); it('gets and compiles the shaders', function() { diff --git a/test/spec/ol/render/webgl/polygonreplay.test.js b/test/spec/ol/render/webgl/polygonreplay.test.js index 38cb4fb5b6..37405a548c 100644 --- a/test/spec/ol/render/webgl/polygonreplay.test.js +++ b/test/spec/ol/render/webgl/polygonreplay.test.js @@ -4,7 +4,7 @@ import MultiPolygon from '../../../../../src/ol/geom/MultiPolygon.js'; import Polygon from '../../../../../src/ol/geom/Polygon.js'; import WebGLPolygonReplay from '../../../../../src/ol/render/webgl/PolygonReplay.js'; import {fragment, vertex} from '../../../../../src/ol/render/webgl/polygonreplay/defaultshader.js'; -import _ol_render_webgl_polygonreplay_defaultshader_Locations_ from '../../../../../src/ol/render/webgl/polygonreplay/defaultshader/Locations.js'; +import Locations from '../../../../../src/ol/render/webgl/polygonreplay/defaultshader/Locations.js'; import LinkedList from '../../../../../src/ol/structs/LinkedList.js'; import RBush from '../../../../../src/ol/structs/RBush.js'; import Fill from '../../../../../src/ol/style/Fill.js'; @@ -337,8 +337,7 @@ describe('ol.render.webgl.PolygonReplay', function() { it('returns the locations used by the shaders', function() { const locations = replay.setUpProgram(gl, context, [2, 2], 1); - expect(locations).to.be.a( - _ol_render_webgl_polygonreplay_defaultshader_Locations_); + expect(locations).to.be.a(Locations); }); it('gets and compiles the shaders', function() { diff --git a/test/spec/ol/render/webgl/texturereplay.test.js b/test/spec/ol/render/webgl/texturereplay.test.js index 68faa452ac..a86e239515 100644 --- a/test/spec/ol/render/webgl/texturereplay.test.js +++ b/test/spec/ol/render/webgl/texturereplay.test.js @@ -1,6 +1,6 @@ import WebGLTextureReplay from '../../../../../src/ol/render/webgl/TextureReplay.js'; import {fragment, vertex} from '../../../../../src/ol/render/webgl/texturereplay/defaultshader.js'; -import _ol_render_webgl_texturereplay_defaultshader_Locations_ from '../../../../../src/ol/render/webgl/texturereplay/defaultshader/Locations.js'; +import Locations from '../../../../../src/ol/render/webgl/texturereplay/defaultshader/Locations.js'; describe('ol.render.webgl.TextureReplay', function() { let replay; @@ -30,8 +30,7 @@ describe('ol.render.webgl.TextureReplay', function() { it('returns the locations used by the shaders', function() { const locations = replay.setUpProgram(gl, context, [2, 2], 1); - expect(locations).to.be.a( - _ol_render_webgl_texturereplay_defaultshader_Locations_); + expect(locations).to.be.a(Locations); }); it('gets and compiles the shaders', function() { From 2b6a3aacef78290d452028e2c60293decdb42d85 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Fri, 9 Feb 2018 09:17:40 +0100 Subject: [PATCH 7/9] Don't create useless temporary variables --- src/ol/render/webgl/CircleReplay.js | 4 +--- src/ol/render/webgl/LineStringReplay.js | 4 +--- src/ol/render/webgl/PolygonReplay.js | 4 +--- src/ol/render/webgl/TextureReplay.js | 4 +--- src/ol/renderer/webgl/Layer.js | 5 +---- 5 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/ol/render/webgl/CircleReplay.js b/src/ol/render/webgl/CircleReplay.js index f904b24d99..3da343af9a 100644 --- a/src/ol/render/webgl/CircleReplay.js +++ b/src/ol/render/webgl/CircleReplay.js @@ -196,9 +196,7 @@ WebGLCircleReplay.prototype.getDeleteResourcesFunction = function(context) { */ WebGLCircleReplay.prototype.setUpProgram = function(gl, context, size, pixelRatio) { // get the program - const fragmentShader = fragment; - const vertexShader = vertex; - const program = context.getProgram(fragmentShader, vertexShader); + const program = context.getProgram(fragment, vertex); // get the locations let locations; diff --git a/src/ol/render/webgl/LineStringReplay.js b/src/ol/render/webgl/LineStringReplay.js index 9adcefc91a..1e0eb18d7f 100644 --- a/src/ol/render/webgl/LineStringReplay.js +++ b/src/ol/render/webgl/LineStringReplay.js @@ -439,9 +439,7 @@ WebGLLineStringReplay.prototype.getDeleteResourcesFunction = function(context) { */ WebGLLineStringReplay.prototype.setUpProgram = function(gl, context, size, pixelRatio) { // get the program - const fragmentShader = fragment; - const vertexShader = vertex; - const program = context.getProgram(fragmentShader, vertexShader); + const program = context.getProgram(fragment, vertex); // get the locations let locations; diff --git a/src/ol/render/webgl/PolygonReplay.js b/src/ol/render/webgl/PolygonReplay.js index 89fd1b4859..75b9fc747a 100644 --- a/src/ol/render/webgl/PolygonReplay.js +++ b/src/ol/render/webgl/PolygonReplay.js @@ -873,9 +873,7 @@ WebGLPolygonReplay.prototype.getDeleteResourcesFunction = function(context) { */ WebGLPolygonReplay.prototype.setUpProgram = function(gl, context, size, pixelRatio) { // get the program - const fragmentShader = fragment; - const vertexShader = vertex; - const program = context.getProgram(fragmentShader, vertexShader); + const program = context.getProgram(fragment, vertex); // get the locations let locations; diff --git a/src/ol/render/webgl/TextureReplay.js b/src/ol/render/webgl/TextureReplay.js index 6ffc4a60a2..daa40fbe0c 100644 --- a/src/ol/render/webgl/TextureReplay.js +++ b/src/ol/render/webgl/TextureReplay.js @@ -271,9 +271,7 @@ WebGLTextureReplay.prototype.createTextures = function(textures, images, texture */ WebGLTextureReplay.prototype.setUpProgram = function(gl, context, size, pixelRatio) { // get the program - const fragmentShader = fragment; - const vertexShader = vertex; - const program = context.getProgram(fragmentShader, vertexShader); + const program = context.getProgram(fragment, vertex); // get the locations let locations; diff --git a/src/ol/renderer/webgl/Layer.js b/src/ol/renderer/webgl/Layer.js index 6dd9fca800..5a47472fc5 100644 --- a/src/ol/renderer/webgl/Layer.js +++ b/src/ol/renderer/webgl/Layer.js @@ -148,10 +148,7 @@ WebGLLayerRenderer.prototype.composeFrame = function(frameState, layerState, con const gl = context.getGL(); - const fragmentShader = fragment; - const vertexShader = vertex; - - const program = context.getProgram(fragmentShader, vertexShader); + const program = context.getProgram(fragment, vertex); let locations; if (!this.defaultLocations_) { From 96eba2bddff1690c81239be0906e4b01ac7acb80 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Fri, 9 Feb 2018 09:21:58 +0100 Subject: [PATCH 8/9] Rename _ol_webgl_Fragment_ to WebGLFragment --- src/ol/render/webgl/circlereplay/defaultshader.js | 4 ++-- src/ol/render/webgl/linestringreplay/defaultshader.js | 4 ++-- src/ol/render/webgl/polygonreplay/defaultshader.js | 4 ++-- src/ol/render/webgl/texturereplay/defaultshader.js | 4 ++-- src/ol/renderer/webgl/defaultmapshader.js | 4 ++-- src/ol/renderer/webgl/tilelayershader.js | 4 ++-- src/ol/webgl/Fragment.js | 8 ++++---- src/ol/webgl/shader.mustache | 4 ++-- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/ol/render/webgl/circlereplay/defaultshader.js b/src/ol/render/webgl/circlereplay/defaultshader.js index 556f239cde..2fa9b0906b 100644 --- a/src/ol/render/webgl/circlereplay/defaultshader.js +++ b/src/ol/render/webgl/circlereplay/defaultshader.js @@ -5,10 +5,10 @@ // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../../index.js'; -import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; +import WebGLFragment from '../../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; -export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_center;\nvarying vec2 v_offset;\nvarying float v_halfWidth;\nvarying float v_pixelRatio;\n\n\n\nuniform float u_opacity;\nuniform vec4 u_fillColor;\nuniform vec4 u_strokeColor;\nuniform vec2 u_size;\n\nvoid main(void) {\n vec2 windowCenter = vec2((v_center.x + 1.0) / 2.0 * u_size.x * v_pixelRatio,\n (v_center.y + 1.0) / 2.0 * u_size.y * v_pixelRatio);\n vec2 windowOffset = vec2((v_offset.x + 1.0) / 2.0 * u_size.x * v_pixelRatio,\n (v_offset.y + 1.0) / 2.0 * u_size.y * v_pixelRatio);\n float radius = length(windowCenter - windowOffset);\n float dist = length(windowCenter - gl_FragCoord.xy);\n if (dist > radius + v_halfWidth) {\n if (u_strokeColor.a == 0.0) {\n gl_FragColor = u_fillColor;\n } else {\n gl_FragColor = u_strokeColor;\n }\n gl_FragColor.a = gl_FragColor.a - (dist - (radius + v_halfWidth));\n } else if (u_fillColor.a == 0.0) {\n // Hooray, no fill, just stroke. We can use real antialiasing.\n gl_FragColor = u_strokeColor;\n if (dist < radius - v_halfWidth) {\n gl_FragColor.a = gl_FragColor.a - (radius - v_halfWidth - dist);\n }\n } else {\n gl_FragColor = u_fillColor;\n float strokeDist = radius - v_halfWidth;\n float antialias = 2.0 * v_pixelRatio;\n if (dist > strokeDist) {\n gl_FragColor = u_strokeColor;\n } else if (dist >= strokeDist - antialias) {\n float step = smoothstep(strokeDist - antialias, strokeDist, dist);\n gl_FragColor = mix(u_fillColor, u_strokeColor, step);\n }\n }\n gl_FragColor.a = gl_FragColor.a * u_opacity;\n if (gl_FragColor.a <= 0.0) {\n discard;\n }\n}\n' : 'precision mediump float;varying vec2 a;varying vec2 b;varying float c;varying float d;uniform float m;uniform vec4 n;uniform vec4 o;uniform vec2 p;void main(void){vec2 windowCenter=vec2((a.x+1.0)/2.0*p.x*d,(a.y+1.0)/2.0*p.y*d);vec2 windowOffset=vec2((b.x+1.0)/2.0*p.x*d,(b.y+1.0)/2.0*p.y*d);float radius=length(windowCenter-windowOffset);float dist=length(windowCenter-gl_FragCoord.xy);if(dist>radius+c){if(o.a==0.0){gl_FragColor=n;}else{gl_FragColor=o;}gl_FragColor.a=gl_FragColor.a-(dist-(radius+c));}else if(n.a==0.0){gl_FragColor=o;if(diststrokeDist){gl_FragColor=o;}else if(dist>=strokeDist-antialias){float step=smoothstep(strokeDist-antialias,strokeDist,dist);gl_FragColor=mix(n,o,step);}} gl_FragColor.a=gl_FragColor.a*m;if(gl_FragColor.a<=0.0){discard;}}'); diff --git a/src/ol/render/webgl/linestringreplay/defaultshader.js b/src/ol/render/webgl/linestringreplay/defaultshader.js index ebf26597af..90973ac463 100644 --- a/src/ol/render/webgl/linestringreplay/defaultshader.js +++ b/src/ol/render/webgl/linestringreplay/defaultshader.js @@ -5,10 +5,10 @@ // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../../index.js'; -import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; +import WebGLFragment from '../../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; -export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\nvarying float v_round;\nvarying vec2 v_roundVertex;\nvarying float v_halfWidth;\n\n\n\nuniform float u_opacity;\nuniform vec4 u_color;\nuniform vec2 u_size;\nuniform float u_pixelRatio;\n\nvoid main(void) {\n if (v_round > 0.0) {\n vec2 windowCoords = vec2((v_roundVertex.x + 1.0) / 2.0 * u_size.x * u_pixelRatio,\n (v_roundVertex.y + 1.0) / 2.0 * u_size.y * u_pixelRatio);\n if (length(windowCoords - gl_FragCoord.xy) > v_halfWidth * u_pixelRatio) {\n discard;\n }\n }\n gl_FragColor = u_color;\n float alpha = u_color.a * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n' : 'precision mediump float;varying float a;varying vec2 aVertex;varying float c;uniform float m;uniform vec4 n;uniform vec2 o;uniform float p;void main(void){if(a>0.0){vec2 windowCoords=vec2((aVertex.x+1.0)/2.0*o.x*p,(aVertex.y+1.0)/2.0*o.y*p);if(length(windowCoords-gl_FragCoord.xy)>c*p){discard;}} gl_FragColor=n;float alpha=n.a*m;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}'); diff --git a/src/ol/render/webgl/polygonreplay/defaultshader.js b/src/ol/render/webgl/polygonreplay/defaultshader.js index 76233d9edd..b1c3fab178 100644 --- a/src/ol/render/webgl/polygonreplay/defaultshader.js +++ b/src/ol/render/webgl/polygonreplay/defaultshader.js @@ -5,10 +5,10 @@ // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../../index.js'; -import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; +import WebGLFragment from '../../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; -export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\n\n\n\nuniform vec4 u_color;\nuniform float u_opacity;\n\nvoid main(void) {\n gl_FragColor = u_color;\n float alpha = u_color.a * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n' : 'precision mediump float;uniform vec4 e;uniform float f;void main(void){gl_FragColor=e;float alpha=e.a*f;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}'); diff --git a/src/ol/render/webgl/texturereplay/defaultshader.js b/src/ol/render/webgl/texturereplay/defaultshader.js index c1f6339df9..2a0afbc6bb 100644 --- a/src/ol/render/webgl/texturereplay/defaultshader.js +++ b/src/ol/render/webgl/texturereplay/defaultshader.js @@ -5,10 +5,10 @@ // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../../index.js'; -import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; +import WebGLFragment from '../../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; -export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_texCoord;\nvarying float v_opacity;\n\nuniform float u_opacity;\nuniform sampler2D u_image;\n\nvoid main(void) {\n vec4 texColor = texture2D(u_image, v_texCoord);\n gl_FragColor.rgb = texColor.rgb;\n float alpha = texColor.a * v_opacity * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n' : 'precision mediump float;varying vec2 a;varying float b;uniform float k;uniform sampler2D l;void main(void){vec4 texColor=texture2D(l,a);gl_FragColor.rgb=texColor.rgb;float alpha=texColor.a*b*k;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}'); diff --git a/src/ol/renderer/webgl/defaultmapshader.js b/src/ol/renderer/webgl/defaultmapshader.js index 2136130c1a..a861cf9c65 100644 --- a/src/ol/renderer/webgl/defaultmapshader.js +++ b/src/ol/renderer/webgl/defaultmapshader.js @@ -5,10 +5,10 @@ // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../index.js'; -import _ol_webgl_Fragment_ from '../../webgl/Fragment.js'; +import WebGLFragment from '../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../webgl/Vertex.js'; -export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_texCoord;\n\n\nuniform float u_opacity;\nuniform sampler2D u_texture;\n\nvoid main(void) {\n vec4 texColor = texture2D(u_texture, v_texCoord);\n gl_FragColor.rgb = texColor.rgb;\n gl_FragColor.a = texColor.a * u_opacity;\n}\n' : 'precision mediump float;varying vec2 a;uniform float f;uniform sampler2D g;void main(void){vec4 texColor=texture2D(g,a);gl_FragColor.rgb=texColor.rgb;gl_FragColor.a=texColor.a*f;}'); diff --git a/src/ol/renderer/webgl/tilelayershader.js b/src/ol/renderer/webgl/tilelayershader.js index ba2f364cce..61cf9e1cec 100644 --- a/src/ol/renderer/webgl/tilelayershader.js +++ b/src/ol/renderer/webgl/tilelayershader.js @@ -5,10 +5,10 @@ // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../index.js'; -import _ol_webgl_Fragment_ from '../../webgl/Fragment.js'; +import WebGLFragment from '../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../webgl/Vertex.js'; -export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_texCoord;\n\n\nuniform sampler2D u_texture;\n\nvoid main(void) {\n gl_FragColor = texture2D(u_texture, v_texCoord);\n}\n' : 'precision mediump float;varying vec2 a;uniform sampler2D e;void main(void){gl_FragColor=texture2D(e,a);}'); diff --git a/src/ol/webgl/Fragment.js b/src/ol/webgl/Fragment.js index e7f8f961d5..ac33747050 100644 --- a/src/ol/webgl/Fragment.js +++ b/src/ol/webgl/Fragment.js @@ -11,17 +11,17 @@ import WebGLShader from '../webgl/Shader.js'; * @param {string} source Source. * @struct */ -const _ol_webgl_Fragment_ = function(source) { +const WebGLFragment = function(source) { WebGLShader.call(this, source); }; -inherits(_ol_webgl_Fragment_, WebGLShader); +inherits(WebGLFragment, WebGLShader); /** * @inheritDoc */ -_ol_webgl_Fragment_.prototype.getType = function() { +WebGLFragment.prototype.getType = function() { return _ol_webgl_.FRAGMENT_SHADER; }; -export default _ol_webgl_Fragment_; +export default WebGLFragment; diff --git a/src/ol/webgl/shader.mustache b/src/ol/webgl/shader.mustache index 038ca5269c..128e9eefb5 100644 --- a/src/ol/webgl/shader.mustache +++ b/src/ol/webgl/shader.mustache @@ -5,10 +5,10 @@ // Run `make shaders` to generate, and commit the result. import {DEBUG_WEBGL} from '../../../index.js'; -import _ol_webgl_Fragment_ from '../../../webgl/Fragment.js'; +import WebGLFragment from '../../../webgl/Fragment.js'; import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; -export const fragment = new _ol_webgl_Fragment_(DEBUG_WEBGL ? +export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\n{{{originalFragmentSource}}}' : 'precision mediump float;{{{fragmentSource}}}'); From 985fc3af47e5576f0bd9b7687e4bb0a0853dc041 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Fri, 9 Feb 2018 09:25:56 +0100 Subject: [PATCH 9/9] Rename _ol_webgl_Vertex_ to WebGLVertex --- src/ol/render/webgl/circlereplay/defaultshader.js | 4 ++-- src/ol/render/webgl/linestringreplay/defaultshader.js | 4 ++-- src/ol/render/webgl/polygonreplay/defaultshader.js | 4 ++-- src/ol/render/webgl/texturereplay/defaultshader.js | 4 ++-- src/ol/renderer/webgl/defaultmapshader.js | 4 ++-- src/ol/renderer/webgl/tilelayershader.js | 4 ++-- src/ol/webgl/Vertex.js | 8 ++++---- src/ol/webgl/shader.mustache | 4 ++-- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/ol/render/webgl/circlereplay/defaultshader.js b/src/ol/render/webgl/circlereplay/defaultshader.js index 2fa9b0906b..07395189e4 100644 --- a/src/ol/render/webgl/circlereplay/defaultshader.js +++ b/src/ol/render/webgl/circlereplay/defaultshader.js @@ -6,12 +6,12 @@ import {DEBUG_WEBGL} from '../../../index.js'; import WebGLFragment from '../../../webgl/Fragment.js'; -import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; +import WebGLVertex from '../../../webgl/Vertex.js'; export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_center;\nvarying vec2 v_offset;\nvarying float v_halfWidth;\nvarying float v_pixelRatio;\n\n\n\nuniform float u_opacity;\nuniform vec4 u_fillColor;\nuniform vec4 u_strokeColor;\nuniform vec2 u_size;\n\nvoid main(void) {\n vec2 windowCenter = vec2((v_center.x + 1.0) / 2.0 * u_size.x * v_pixelRatio,\n (v_center.y + 1.0) / 2.0 * u_size.y * v_pixelRatio);\n vec2 windowOffset = vec2((v_offset.x + 1.0) / 2.0 * u_size.x * v_pixelRatio,\n (v_offset.y + 1.0) / 2.0 * u_size.y * v_pixelRatio);\n float radius = length(windowCenter - windowOffset);\n float dist = length(windowCenter - gl_FragCoord.xy);\n if (dist > radius + v_halfWidth) {\n if (u_strokeColor.a == 0.0) {\n gl_FragColor = u_fillColor;\n } else {\n gl_FragColor = u_strokeColor;\n }\n gl_FragColor.a = gl_FragColor.a - (dist - (radius + v_halfWidth));\n } else if (u_fillColor.a == 0.0) {\n // Hooray, no fill, just stroke. We can use real antialiasing.\n gl_FragColor = u_strokeColor;\n if (dist < radius - v_halfWidth) {\n gl_FragColor.a = gl_FragColor.a - (radius - v_halfWidth - dist);\n }\n } else {\n gl_FragColor = u_fillColor;\n float strokeDist = radius - v_halfWidth;\n float antialias = 2.0 * v_pixelRatio;\n if (dist > strokeDist) {\n gl_FragColor = u_strokeColor;\n } else if (dist >= strokeDist - antialias) {\n float step = smoothstep(strokeDist - antialias, strokeDist, dist);\n gl_FragColor = mix(u_fillColor, u_strokeColor, step);\n }\n }\n gl_FragColor.a = gl_FragColor.a * u_opacity;\n if (gl_FragColor.a <= 0.0) {\n discard;\n }\n}\n' : 'precision mediump float;varying vec2 a;varying vec2 b;varying float c;varying float d;uniform float m;uniform vec4 n;uniform vec4 o;uniform vec2 p;void main(void){vec2 windowCenter=vec2((a.x+1.0)/2.0*p.x*d,(a.y+1.0)/2.0*p.y*d);vec2 windowOffset=vec2((b.x+1.0)/2.0*p.x*d,(b.y+1.0)/2.0*p.y*d);float radius=length(windowCenter-windowOffset);float dist=length(windowCenter-gl_FragCoord.xy);if(dist>radius+c){if(o.a==0.0){gl_FragColor=n;}else{gl_FragColor=o;}gl_FragColor.a=gl_FragColor.a-(dist-(radius+c));}else if(n.a==0.0){gl_FragColor=o;if(diststrokeDist){gl_FragColor=o;}else if(dist>=strokeDist-antialias){float step=smoothstep(strokeDist-antialias,strokeDist,dist);gl_FragColor=mix(n,o,step);}} gl_FragColor.a=gl_FragColor.a*m;if(gl_FragColor.a<=0.0){discard;}}'); -export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new WebGLVertex(DEBUG_WEBGL ? 'varying vec2 v_center;\nvarying vec2 v_offset;\nvarying float v_halfWidth;\nvarying float v_pixelRatio;\n\n\nattribute vec2 a_position;\nattribute float a_instruction;\nattribute float a_radius;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_lineWidth;\nuniform float u_pixelRatio;\n\nvoid main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix * u_offsetRotateMatrix;\n v_center = vec4(u_projectionMatrix * vec4(a_position, 0.0, 1.0)).xy;\n v_pixelRatio = u_pixelRatio;\n float lineWidth = u_lineWidth * u_pixelRatio;\n v_halfWidth = lineWidth / 2.0;\n if (lineWidth == 0.0) {\n lineWidth = 2.0 * u_pixelRatio;\n }\n vec2 offset;\n // Radius with anitaliasing (roughly).\n float radius = a_radius + 3.0 * u_pixelRatio;\n // Until we get gl_VertexID in WebGL, we store an instruction.\n if (a_instruction == 0.0) {\n // Offsetting the edges of the triangle by lineWidth / 2 is necessary, however\n // we should also leave some space for the antialiasing, thus we offset by lineWidth.\n offset = vec2(-1.0, 1.0);\n } else if (a_instruction == 1.0) {\n offset = vec2(-1.0, -1.0);\n } else if (a_instruction == 2.0) {\n offset = vec2(1.0, -1.0);\n } else {\n offset = vec2(1.0, 1.0);\n }\n\n gl_Position = u_projectionMatrix * vec4(a_position + offset * radius, 0.0, 1.0) +\n offsetMatrix * vec4(offset * lineWidth, 0.0, 0.0);\n v_offset = vec4(u_projectionMatrix * vec4(a_position.x + a_radius, a_position.y,\n 0.0, 1.0)).xy;\n\n if (distance(v_center, v_offset) > 20000.0) {\n gl_Position = vec4(v_center, 0.0, 1.0);\n }\n}\n\n\n' : 'varying vec2 a;varying vec2 b;varying float c;varying float d;attribute vec2 e;attribute float f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;uniform float k;uniform float l;void main(void){mat4 offsetMatrix=i*j;a=vec4(h*vec4(e,0.0,1.0)).xy;d=l;float lineWidth=k*l;c=lineWidth/2.0;if(lineWidth==0.0){lineWidth=2.0*l;}vec2 offset;float radius=g+3.0*l;//Until we get gl_VertexID in WebGL,we store an instruction.if(f==0.0){//Offsetting the edges of the triangle by lineWidth/2 is necessary,however//we should also leave some space for the antialiasing,thus we offset by lineWidth.offset=vec2(-1.0,1.0);}else if(f==1.0){offset=vec2(-1.0,-1.0);}else if(f==2.0){offset=vec2(1.0,-1.0);}else{offset=vec2(1.0,1.0);}gl_Position=h*vec4(e+offset*radius,0.0,1.0)+offsetMatrix*vec4(offset*lineWidth,0.0,0.0);b=vec4(h*vec4(e.x+g,e.y,0.0,1.0)).xy;if(distance(a,b)>20000.0){gl_Position=vec4(a,0.0,1.0);}}'); diff --git a/src/ol/render/webgl/linestringreplay/defaultshader.js b/src/ol/render/webgl/linestringreplay/defaultshader.js index 90973ac463..b0de052e5a 100644 --- a/src/ol/render/webgl/linestringreplay/defaultshader.js +++ b/src/ol/render/webgl/linestringreplay/defaultshader.js @@ -6,12 +6,12 @@ import {DEBUG_WEBGL} from '../../../index.js'; import WebGLFragment from '../../../webgl/Fragment.js'; -import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; +import WebGLVertex from '../../../webgl/Vertex.js'; export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\nvarying float v_round;\nvarying vec2 v_roundVertex;\nvarying float v_halfWidth;\n\n\n\nuniform float u_opacity;\nuniform vec4 u_color;\nuniform vec2 u_size;\nuniform float u_pixelRatio;\n\nvoid main(void) {\n if (v_round > 0.0) {\n vec2 windowCoords = vec2((v_roundVertex.x + 1.0) / 2.0 * u_size.x * u_pixelRatio,\n (v_roundVertex.y + 1.0) / 2.0 * u_size.y * u_pixelRatio);\n if (length(windowCoords - gl_FragCoord.xy) > v_halfWidth * u_pixelRatio) {\n discard;\n }\n }\n gl_FragColor = u_color;\n float alpha = u_color.a * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n' : 'precision mediump float;varying float a;varying vec2 aVertex;varying float c;uniform float m;uniform vec4 n;uniform vec2 o;uniform float p;void main(void){if(a>0.0){vec2 windowCoords=vec2((aVertex.x+1.0)/2.0*o.x*p,(aVertex.y+1.0)/2.0*o.y*p);if(length(windowCoords-gl_FragCoord.xy)>c*p){discard;}} gl_FragColor=n;float alpha=n.a*m;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}'); -export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new WebGLVertex(DEBUG_WEBGL ? 'varying float v_round;\nvarying vec2 v_roundVertex;\nvarying float v_halfWidth;\n\n\nattribute vec2 a_lastPos;\nattribute vec2 a_position;\nattribute vec2 a_nextPos;\nattribute float a_direction;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_lineWidth;\nuniform float u_miterLimit;\n\nbool nearlyEquals(in float value, in float ref) {\n float epsilon = 0.000000000001;\n return value >= ref - epsilon && value <= ref + epsilon;\n}\n\nvoid alongNormal(out vec2 offset, in vec2 nextP, in float turnDir, in float direction) {\n vec2 dirVect = nextP - a_position;\n vec2 normal = normalize(vec2(-turnDir * dirVect.y, turnDir * dirVect.x));\n offset = u_lineWidth / 2.0 * normal * direction;\n}\n\nvoid miterUp(out vec2 offset, out float round, in bool isRound, in float direction) {\n float halfWidth = u_lineWidth / 2.0;\n vec2 tangent = normalize(normalize(a_nextPos - a_position) + normalize(a_position - a_lastPos));\n vec2 normal = vec2(-tangent.y, tangent.x);\n vec2 dirVect = a_nextPos - a_position;\n vec2 tmpNormal = normalize(vec2(-dirVect.y, dirVect.x));\n float miterLength = abs(halfWidth / dot(normal, tmpNormal));\n offset = normal * direction * miterLength;\n round = 0.0;\n if (isRound) {\n round = 1.0;\n } else if (miterLength > u_miterLimit + u_lineWidth) {\n offset = halfWidth * tmpNormal * direction;\n }\n}\n\nbool miterDown(out vec2 offset, in vec4 projPos, in mat4 offsetMatrix, in float direction) {\n bool degenerate = false;\n vec2 tangent = normalize(normalize(a_nextPos - a_position) + normalize(a_position - a_lastPos));\n vec2 normal = vec2(-tangent.y, tangent.x);\n vec2 dirVect = a_lastPos - a_position;\n vec2 tmpNormal = normalize(vec2(-dirVect.y, dirVect.x));\n vec2 longOffset, shortOffset, longVertex;\n vec4 shortProjVertex;\n float halfWidth = u_lineWidth / 2.0;\n if (length(a_nextPos - a_position) > length(a_lastPos - a_position)) {\n longOffset = tmpNormal * direction * halfWidth;\n shortOffset = normalize(vec2(dirVect.y, -dirVect.x)) * direction * halfWidth;\n longVertex = a_nextPos;\n shortProjVertex = u_projectionMatrix * vec4(a_lastPos, 0.0, 1.0);\n } else {\n shortOffset = tmpNormal * direction * halfWidth;\n longOffset = normalize(vec2(dirVect.y, -dirVect.x)) * direction * halfWidth;\n longVertex = a_lastPos;\n shortProjVertex = u_projectionMatrix * vec4(a_nextPos, 0.0, 1.0);\n }\n //Intersection algorithm based on theory by Paul Bourke (http://paulbourke.net/geometry/pointlineplane/).\n vec4 p1 = u_projectionMatrix * vec4(longVertex, 0.0, 1.0) + offsetMatrix * vec4(longOffset, 0.0, 0.0);\n vec4 p2 = projPos + offsetMatrix * vec4(longOffset, 0.0, 0.0);\n vec4 p3 = shortProjVertex + offsetMatrix * vec4(-shortOffset, 0.0, 0.0);\n vec4 p4 = shortProjVertex + offsetMatrix * vec4(shortOffset, 0.0, 0.0);\n float denom = (p4.y - p3.y) * (p2.x - p1.x) - (p4.x - p3.x) * (p2.y - p1.y);\n float firstU = ((p4.x - p3.x) * (p1.y - p3.y) - (p4.y - p3.y) * (p1.x - p3.x)) / denom;\n float secondU = ((p2.x - p1.x) * (p1.y - p3.y) - (p2.y - p1.y) * (p1.x - p3.x)) / denom;\n float epsilon = 0.000000000001;\n if (firstU > epsilon && firstU < 1.0 - epsilon && secondU > epsilon && secondU < 1.0 - epsilon) {\n shortProjVertex.x = p1.x + firstU * (p2.x - p1.x);\n shortProjVertex.y = p1.y + firstU * (p2.y - p1.y);\n offset = shortProjVertex.xy;\n degenerate = true;\n } else {\n float miterLength = abs(halfWidth / dot(normal, tmpNormal));\n offset = normal * direction * miterLength;\n }\n return degenerate;\n}\n\nvoid squareCap(out vec2 offset, out float round, in bool isRound, in vec2 nextP,\n in float turnDir, in float direction) {\n round = 0.0;\n vec2 dirVect = a_position - nextP;\n vec2 firstNormal = normalize(dirVect);\n vec2 secondNormal = vec2(turnDir * firstNormal.y * direction, -turnDir * firstNormal.x * direction);\n vec2 hypotenuse = normalize(firstNormal - secondNormal);\n vec2 normal = vec2(turnDir * hypotenuse.y * direction, -turnDir * hypotenuse.x * direction);\n float length = sqrt(v_halfWidth * v_halfWidth * 2.0);\n offset = normal * length;\n if (isRound) {\n round = 1.0;\n }\n}\n\nvoid main(void) {\n bool degenerate = false;\n float direction = float(sign(a_direction));\n mat4 offsetMatrix = u_offsetScaleMatrix * u_offsetRotateMatrix;\n vec2 offset;\n vec4 projPos = u_projectionMatrix * vec4(a_position, 0.0, 1.0);\n bool round = nearlyEquals(mod(a_direction, 2.0), 0.0);\n\n v_round = 0.0;\n v_halfWidth = u_lineWidth / 2.0;\n v_roundVertex = projPos.xy;\n\n if (nearlyEquals(mod(a_direction, 3.0), 0.0) || nearlyEquals(mod(a_direction, 17.0), 0.0)) {\n alongNormal(offset, a_nextPos, 1.0, direction);\n } else if (nearlyEquals(mod(a_direction, 5.0), 0.0) || nearlyEquals(mod(a_direction, 13.0), 0.0)) {\n alongNormal(offset, a_lastPos, -1.0, direction);\n } else if (nearlyEquals(mod(a_direction, 23.0), 0.0)) {\n miterUp(offset, v_round, round, direction);\n } else if (nearlyEquals(mod(a_direction, 19.0), 0.0)) {\n degenerate = miterDown(offset, projPos, offsetMatrix, direction);\n } else if (nearlyEquals(mod(a_direction, 7.0), 0.0)) {\n squareCap(offset, v_round, round, a_nextPos, 1.0, direction);\n } else if (nearlyEquals(mod(a_direction, 11.0), 0.0)) {\n squareCap(offset, v_round, round, a_lastPos, -1.0, direction);\n }\n if (!degenerate) {\n vec4 offsets = offsetMatrix * vec4(offset, 0.0, 0.0);\n gl_Position = projPos + offsets;\n } else {\n gl_Position = vec4(offset, 0.0, 1.0);\n }\n}\n\n\n' : 'varying float a;varying vec2 aVertex;varying float c;attribute vec2 d;attribute vec2 e;attribute vec2 f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;uniform float k;uniform float l;bool nearlyEquals(in float value,in float ref){float epsilon=0.000000000001;return value>=ref-epsilon&&value<=ref+epsilon;}void alongNormal(out vec2 offset,in vec2 nextP,in float turnDir,in float direction){vec2 dirVect=nextP-e;vec2 normal=normalize(vec2(-turnDir*dirVect.y,turnDir*dirVect.x));offset=k/2.0*normal*direction;}void miterUp(out vec2 offset,out float round,in bool isRound,in float direction){float halfWidth=k/2.0;vec2 tangent=normalize(normalize(f-e)+normalize(e-d));vec2 normal=vec2(-tangent.y,tangent.x);vec2 dirVect=f-e;vec2 tmpNormal=normalize(vec2(-dirVect.y,dirVect.x));float miterLength=abs(halfWidth/dot(normal,tmpNormal));offset=normal*direction*miterLength;round=0.0;if(isRound){round=1.0;}else if(miterLength>l+k){offset=halfWidth*tmpNormal*direction;}} bool miterDown(out vec2 offset,in vec4 projPos,in mat4 offsetMatrix,in float direction){bool degenerate=false;vec2 tangent=normalize(normalize(f-e)+normalize(e-d));vec2 normal=vec2(-tangent.y,tangent.x);vec2 dirVect=d-e;vec2 tmpNormal=normalize(vec2(-dirVect.y,dirVect.x));vec2 longOffset,shortOffset,longVertex;vec4 shortProjVertex;float halfWidth=k/2.0;if(length(f-e)>length(d-e)){longOffset=tmpNormal*direction*halfWidth;shortOffset=normalize(vec2(dirVect.y,-dirVect.x))*direction*halfWidth;longVertex=f;shortProjVertex=h*vec4(d,0.0,1.0);}else{shortOffset=tmpNormal*direction*halfWidth;longOffset=normalize(vec2(dirVect.y,-dirVect.x))*direction*halfWidth;longVertex=d;shortProjVertex=h*vec4(f,0.0,1.0);}vec4 p1=h*vec4(longVertex,0.0,1.0)+offsetMatrix*vec4(longOffset,0.0,0.0);vec4 p2=projPos+offsetMatrix*vec4(longOffset,0.0,0.0);vec4 p3=shortProjVertex+offsetMatrix*vec4(-shortOffset,0.0,0.0);vec4 p4=shortProjVertex+offsetMatrix*vec4(shortOffset,0.0,0.0);float denom=(p4.y-p3.y)*(p2.x-p1.x)-(p4.x-p3.x)*(p2.y-p1.y);float firstU=((p4.x-p3.x)*(p1.y-p3.y)-(p4.y-p3.y)*(p1.x-p3.x))/denom;float secondU=((p2.x-p1.x)*(p1.y-p3.y)-(p2.y-p1.y)*(p1.x-p3.x))/denom;float epsilon=0.000000000001;if(firstU>epsilon&&firstU<1.0-epsilon&&secondU>epsilon&&secondU<1.0-epsilon){shortProjVertex.x=p1.x+firstU*(p2.x-p1.x);shortProjVertex.y=p1.y+firstU*(p2.y-p1.y);offset=shortProjVertex.xy;degenerate=true;}else{float miterLength=abs(halfWidth/dot(normal,tmpNormal));offset=normal*direction*miterLength;}return degenerate;}void squareCap(out vec2 offset,out float round,in bool isRound,in vec2 nextP,in float turnDir,in float direction){round=0.0;vec2 dirVect=e-nextP;vec2 firstNormal=normalize(dirVect);vec2 secondNormal=vec2(turnDir*firstNormal.y*direction,-turnDir*firstNormal.x*direction);vec2 hypotenuse=normalize(firstNormal-secondNormal);vec2 normal=vec2(turnDir*hypotenuse.y*direction,-turnDir*hypotenuse.x*direction);float length=sqrt(c*c*2.0);offset=normal*length;if(isRound){round=1.0;}} void main(void){bool degenerate=false;float direction=float(sign(g));mat4 offsetMatrix=i*j;vec2 offset;vec4 projPos=h*vec4(e,0.0,1.0);bool round=nearlyEquals(mod(g,2.0),0.0);a=0.0;c=k/2.0;aVertex=projPos.xy;if(nearlyEquals(mod(g,3.0),0.0)||nearlyEquals(mod(g,17.0),0.0)){alongNormal(offset,f,1.0,direction);}else if(nearlyEquals(mod(g,5.0),0.0)||nearlyEquals(mod(g,13.0),0.0)){alongNormal(offset,d,-1.0,direction);}else if(nearlyEquals(mod(g,23.0),0.0)){miterUp(offset,a,round,direction);}else if(nearlyEquals(mod(g,19.0),0.0)){degenerate=miterDown(offset,projPos,offsetMatrix,direction);}else if(nearlyEquals(mod(g,7.0),0.0)){squareCap(offset,a,round,f,1.0,direction);}else if(nearlyEquals(mod(g,11.0),0.0)){squareCap(offset,a,round,d,-1.0,direction);}if(!degenerate){vec4 offsets=offsetMatrix*vec4(offset,0.0,0.0);gl_Position=projPos+offsets;}else{gl_Position=vec4(offset,0.0,1.0);}}'); diff --git a/src/ol/render/webgl/polygonreplay/defaultshader.js b/src/ol/render/webgl/polygonreplay/defaultshader.js index b1c3fab178..6d36aef720 100644 --- a/src/ol/render/webgl/polygonreplay/defaultshader.js +++ b/src/ol/render/webgl/polygonreplay/defaultshader.js @@ -6,12 +6,12 @@ import {DEBUG_WEBGL} from '../../../index.js'; import WebGLFragment from '../../../webgl/Fragment.js'; -import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; +import WebGLVertex from '../../../webgl/Vertex.js'; export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\n\n\n\nuniform vec4 u_color;\nuniform float u_opacity;\n\nvoid main(void) {\n gl_FragColor = u_color;\n float alpha = u_color.a * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n' : 'precision mediump float;uniform vec4 e;uniform float f;void main(void){gl_FragColor=e;float alpha=e.a*f;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}'); -export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new WebGLVertex(DEBUG_WEBGL ? '\n\nattribute vec2 a_position;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\n\nvoid main(void) {\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0);\n}\n\n\n' : 'attribute vec2 a;uniform mat4 b;uniform mat4 c;uniform mat4 d;void main(void){gl_Position=b*vec4(a,0.0,1.0);}'); diff --git a/src/ol/render/webgl/texturereplay/defaultshader.js b/src/ol/render/webgl/texturereplay/defaultshader.js index 2a0afbc6bb..e439eed48a 100644 --- a/src/ol/render/webgl/texturereplay/defaultshader.js +++ b/src/ol/render/webgl/texturereplay/defaultshader.js @@ -6,12 +6,12 @@ import {DEBUG_WEBGL} from '../../../index.js'; import WebGLFragment from '../../../webgl/Fragment.js'; -import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; +import WebGLVertex from '../../../webgl/Vertex.js'; export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_texCoord;\nvarying float v_opacity;\n\nuniform float u_opacity;\nuniform sampler2D u_image;\n\nvoid main(void) {\n vec4 texColor = texture2D(u_image, v_texCoord);\n gl_FragColor.rgb = texColor.rgb;\n float alpha = texColor.a * v_opacity * u_opacity;\n if (alpha == 0.0) {\n discard;\n }\n gl_FragColor.a = alpha;\n}\n' : 'precision mediump float;varying vec2 a;varying float b;uniform float k;uniform sampler2D l;void main(void){vec4 texColor=texture2D(l,a);gl_FragColor.rgb=texColor.rgb;float alpha=texColor.a*b*k;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}'); -export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new WebGLVertex(DEBUG_WEBGL ? 'varying vec2 v_texCoord;\nvarying float v_opacity;\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\nattribute vec2 a_offsets;\nattribute float a_opacity;\nattribute float a_rotateWithView;\n\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\n\nvoid main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix;\n if (a_rotateWithView == 1.0) {\n offsetMatrix = u_offsetScaleMatrix * u_offsetRotateMatrix;\n }\n vec4 offsets = offsetMatrix * vec4(a_offsets, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n v_texCoord = a_texCoord;\n v_opacity = a_opacity;\n}\n\n\n' : 'varying vec2 a;varying float b;attribute vec2 c;attribute vec2 d;attribute vec2 e;attribute float f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;void main(void){mat4 offsetMatrix=i;if(g==1.0){offsetMatrix=i*j;}vec4 offsets=offsetMatrix*vec4(e,0.0,0.0);gl_Position=h*vec4(c,0.0,1.0)+offsets;a=d;b=f;}'); diff --git a/src/ol/renderer/webgl/defaultmapshader.js b/src/ol/renderer/webgl/defaultmapshader.js index a861cf9c65..317a41063a 100644 --- a/src/ol/renderer/webgl/defaultmapshader.js +++ b/src/ol/renderer/webgl/defaultmapshader.js @@ -6,12 +6,12 @@ import {DEBUG_WEBGL} from '../../index.js'; import WebGLFragment from '../../webgl/Fragment.js'; -import _ol_webgl_Vertex_ from '../../webgl/Vertex.js'; +import WebGLVertex from '../../webgl/Vertex.js'; export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_texCoord;\n\n\nuniform float u_opacity;\nuniform sampler2D u_texture;\n\nvoid main(void) {\n vec4 texColor = texture2D(u_texture, v_texCoord);\n gl_FragColor.rgb = texColor.rgb;\n gl_FragColor.a = texColor.a * u_opacity;\n}\n' : 'precision mediump float;varying vec2 a;uniform float f;uniform sampler2D g;void main(void){vec4 texColor=texture2D(g,a);gl_FragColor.rgb=texColor.rgb;gl_FragColor.a=texColor.a*f;}'); -export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new WebGLVertex(DEBUG_WEBGL ? 'varying vec2 v_texCoord;\n\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat4 u_texCoordMatrix;\nuniform mat4 u_projectionMatrix;\n\nvoid main(void) {\n gl_Position = u_projectionMatrix * vec4(a_position, 0., 1.);\n v_texCoord = (u_texCoordMatrix * vec4(a_texCoord, 0., 1.)).st;\n}\n\n\n' : 'varying vec2 a;attribute vec2 b;attribute vec2 c;uniform mat4 d;uniform mat4 e;void main(void){gl_Position=e*vec4(b,0.,1.);a=(d*vec4(c,0.,1.)).st;}'); diff --git a/src/ol/renderer/webgl/tilelayershader.js b/src/ol/renderer/webgl/tilelayershader.js index 61cf9e1cec..b03dd30dfa 100644 --- a/src/ol/renderer/webgl/tilelayershader.js +++ b/src/ol/renderer/webgl/tilelayershader.js @@ -6,12 +6,12 @@ import {DEBUG_WEBGL} from '../../index.js'; import WebGLFragment from '../../webgl/Fragment.js'; -import _ol_webgl_Vertex_ from '../../webgl/Vertex.js'; +import WebGLVertex from '../../webgl/Vertex.js'; export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\nvarying vec2 v_texCoord;\n\n\nuniform sampler2D u_texture;\n\nvoid main(void) {\n gl_FragColor = texture2D(u_texture, v_texCoord);\n}\n' : 'precision mediump float;varying vec2 a;uniform sampler2D e;void main(void){gl_FragColor=texture2D(e,a);}'); -export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new WebGLVertex(DEBUG_WEBGL ? 'varying vec2 v_texCoord;\n\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\nuniform vec4 u_tileOffset;\n\nvoid main(void) {\n gl_Position = vec4(a_position * u_tileOffset.xy + u_tileOffset.zw, 0., 1.);\n v_texCoord = a_texCoord;\n}\n\n\n' : 'varying vec2 a;attribute vec2 b;attribute vec2 c;uniform vec4 d;void main(void){gl_Position=vec4(b*d.xy+d.zw,0.,1.);a=c;}'); diff --git a/src/ol/webgl/Vertex.js b/src/ol/webgl/Vertex.js index 554324675d..b0eadd0820 100644 --- a/src/ol/webgl/Vertex.js +++ b/src/ol/webgl/Vertex.js @@ -11,17 +11,17 @@ import WebGLShader from '../webgl/Shader.js'; * @param {string} source Source. * @struct */ -const _ol_webgl_Vertex_ = function(source) { +const WebGLVertex = function(source) { WebGLShader.call(this, source); }; -inherits(_ol_webgl_Vertex_, WebGLShader); +inherits(WebGLVertex, WebGLShader); /** * @inheritDoc */ -_ol_webgl_Vertex_.prototype.getType = function() { +WebGLVertex.prototype.getType = function() { return _ol_webgl_.VERTEX_SHADER; }; -export default _ol_webgl_Vertex_; +export default WebGLVertex; diff --git a/src/ol/webgl/shader.mustache b/src/ol/webgl/shader.mustache index 128e9eefb5..b37c64ea2d 100644 --- a/src/ol/webgl/shader.mustache +++ b/src/ol/webgl/shader.mustache @@ -6,12 +6,12 @@ import {DEBUG_WEBGL} from '../../../index.js'; import WebGLFragment from '../../../webgl/Fragment.js'; -import _ol_webgl_Vertex_ from '../../../webgl/Vertex.js'; +import WebGLVertex from '../../../webgl/Vertex.js'; export const fragment = new WebGLFragment(DEBUG_WEBGL ? 'precision mediump float;\n{{{originalFragmentSource}}}' : 'precision mediump float;{{{fragmentSource}}}'); -export const vertex = new _ol_webgl_Vertex_(DEBUG_WEBGL ? +export const vertex = new WebGLVertex(DEBUG_WEBGL ? '{{{originalVertexSource}}}' : '{{{vertexSource}}}');