From 12e81e5487aaa82928edd203c8374367c63ad384 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Sat, 6 Aug 2016 14:28:50 -0600 Subject: [PATCH] Clean up WebGL provides --- Makefile | 4 +- .../defaultshader.glsl} | 4 +- .../render/webgl/imagereplay/defaultshader.js | 145 +++++++++++++++++ .../{imagereplay.js => imagereplay/index.js} | 13 +- .../render/webgl/webglimagedefaultshader.js | 147 ------------------ ...lmapdefault.glsl => defaultmapshader.glsl} | 4 +- src/ol/renderer/webgl/defaultmapshader.js | 121 ++++++++++++++ src/ol/renderer/webgl/layer.js | 14 +- src/ol/renderer/webgl/tilelayer.js | 16 +- ...bgltilelayer.glsl => tilelayershader.glsl} | 4 +- src/ol/renderer/webgl/tilelayershader.js | 109 +++++++++++++ .../renderer/webgl/webglmapdefaultshader.js | 123 --------------- src/ol/renderer/webgl/webgltilelayershader.js | 111 ------------- src/ol/webgl/context.js | 4 +- src/ol/webgl/fragment.js | 25 +++ src/ol/webgl/shader.js | 43 ----- src/ol/webgl/shader.mustache | 46 +++--- src/ol/webgl/vertex.js | 25 +++ 18 files changed, 474 insertions(+), 484 deletions(-) rename src/ol/render/webgl/{webglimagedefault.glsl => imagereplay/defaultshader.glsl} (89%) create mode 100644 src/ol/render/webgl/imagereplay/defaultshader.js rename src/ol/render/webgl/{imagereplay.js => imagereplay/index.js} (98%) delete mode 100644 src/ol/render/webgl/webglimagedefaultshader.js rename src/ol/renderer/webgl/{webglmapdefault.glsl => defaultmapshader.glsl} (84%) create mode 100644 src/ol/renderer/webgl/defaultmapshader.js rename src/ol/renderer/webgl/{webgltilelayer.glsl => tilelayershader.glsl} (79%) create mode 100644 src/ol/renderer/webgl/tilelayershader.js delete mode 100644 src/ol/renderer/webgl/webglmapdefaultshader.js delete mode 100644 src/ol/renderer/webgl/webgltilelayershader.js create mode 100644 src/ol/webgl/fragment.js create mode 100644 src/ol/webgl/vertex.js diff --git a/Makefile b/Makefile index 1653ae9157..a31cab75ce 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ OS := $(shell uname) BRANCH := $(shell git rev-parse --abbrev-ref HEAD) SRC_GLSL := $(shell find src -type f -name '*.glsl') -SRC_SHADER_JS := $(patsubst %.glsl,%shader.js,$(SRC_GLSL)) +SRC_SHADER_JS := $(patsubst %shader.glsl,%shader.js,$(SRC_GLSL)) SRC_JS := $(filter-out $(SRC_SHADER_JS),$(shell find src -name '*.js')) SRC_JSDOC = $(shell find src -type f -name '*.jsdoc') @@ -302,5 +302,5 @@ build/test_rendering_requires.js: $(SPEC_RENDERING_JS) @mkdir -p $(@D) @node tasks/generate-requires.js $^ > $@ -%shader.js: %.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py build/timestamps/node-modules-timestamp +%shader.js: %shader.glsl src/ol/webgl/shader.mustache bin/pyglslunit.py build/timestamps/node-modules-timestamp @python bin/pyglslunit.py --input $< | ./node_modules/.bin/mustache - src/ol/webgl/shader.mustache > $@ diff --git a/src/ol/render/webgl/webglimagedefault.glsl b/src/ol/render/webgl/imagereplay/defaultshader.glsl similarity index 89% rename from src/ol/render/webgl/webglimagedefault.glsl rename to src/ol/render/webgl/imagereplay/defaultshader.glsl index 15d2bce128..7eb34517d2 100644 --- a/src/ol/render/webgl/webglimagedefault.glsl +++ b/src/ol/render/webgl/imagereplay/defaultshader.glsl @@ -1,5 +1,5 @@ -//! NAMESPACE=ol.render.webgl.imagereplay.shader.Default -//! CLASS=ol.render.webgl.imagereplay.shader.Default +//! NAMESPACE=ol.renderer.webgl.imagereplay.defaultshader +//! CLASS=ol.renderer.webgl.imagereplay.defaultshader //! COMMON diff --git a/src/ol/render/webgl/imagereplay/defaultshader.js b/src/ol/render/webgl/imagereplay/defaultshader.js new file mode 100644 index 0000000000..6fc6d2144b --- /dev/null +++ b/src/ol/render/webgl/imagereplay/defaultshader.js @@ -0,0 +1,145 @@ +// This file is automatically generated, do not edit +goog.provide('ol.renderer.webgl.imagereplay.defaultshader'); + +goog.require('ol.webgl.Fragment'); +goog.require('ol.webgl.Vertex'); + + +/** + * @constructor + * @extends {ol.webgl.Fragment} + * @struct + */ +ol.renderer.webgl.imagereplay.defaultshader.Fragment = function() { + ol.webgl.Fragment.call(this, ol.renderer.webgl.imagereplay.defaultshader.Fragment.SOURCE); +}; +ol.inherits(ol.renderer.webgl.imagereplay.defaultshader.Fragment, ol.webgl.Fragment); +goog.addSingletonGetter(ol.renderer.webgl.imagereplay.defaultshader.Fragment); + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.imagereplay.defaultshader.Fragment.DEBUG_SOURCE = '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'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.imagereplay.defaultshader.Fragment.OPTIMIZED_SOURCE = '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;}'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.imagereplay.defaultshader.Fragment.SOURCE = goog.DEBUG ? + ol.renderer.webgl.imagereplay.defaultshader.Fragment.DEBUG_SOURCE : + ol.renderer.webgl.imagereplay.defaultshader.Fragment.OPTIMIZED_SOURCE; + + +/** + * @constructor + * @extends {ol.webgl.Vertex} + * @struct + */ +ol.renderer.webgl.imagereplay.defaultshader.Vertex = function() { + ol.webgl.Vertex.call(this, ol.renderer.webgl.imagereplay.defaultshader.Vertex.SOURCE); +}; +ol.inherits(ol.renderer.webgl.imagereplay.defaultshader.Vertex, ol.webgl.Vertex); +goog.addSingletonGetter(ol.renderer.webgl.imagereplay.defaultshader.Vertex); + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.imagereplay.defaultshader.Vertex.DEBUG_SOURCE = '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.);\n gl_Position = u_projectionMatrix * vec4(a_position, 0., 1.) + offsets;\n v_texCoord = a_texCoord;\n v_opacity = a_opacity;\n}\n\n\n'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.imagereplay.defaultshader.Vertex.OPTIMIZED_SOURCE = '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.);gl_Position=h*vec4(c,0.,1.)+offsets;a=d;b=f;}'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.imagereplay.defaultshader.Vertex.SOURCE = goog.DEBUG ? + ol.renderer.webgl.imagereplay.defaultshader.Vertex.DEBUG_SOURCE : + ol.renderer.webgl.imagereplay.defaultshader.Vertex.OPTIMIZED_SOURCE; + + +/** + * @constructor + * @param {WebGLRenderingContext} gl GL. + * @param {WebGLProgram} program Program. + * @struct + */ +ol.renderer.webgl.imagereplay.defaultshader.Locations = function(gl, program) { + + /** + * @type {WebGLUniformLocation} + */ + this.u_image = gl.getUniformLocation( + program, goog.DEBUG ? 'u_image' : 'l'); + + /** + * @type {WebGLUniformLocation} + */ + this.u_offsetRotateMatrix = gl.getUniformLocation( + program, goog.DEBUG ? 'u_offsetRotateMatrix' : 'j'); + + /** + * @type {WebGLUniformLocation} + */ + this.u_offsetScaleMatrix = gl.getUniformLocation( + program, goog.DEBUG ? 'u_offsetScaleMatrix' : 'i'); + + /** + * @type {WebGLUniformLocation} + */ + this.u_opacity = gl.getUniformLocation( + program, goog.DEBUG ? 'u_opacity' : 'k'); + + /** + * @type {WebGLUniformLocation} + */ + this.u_projectionMatrix = gl.getUniformLocation( + program, goog.DEBUG ? 'u_projectionMatrix' : 'h'); + + /** + * @type {number} + */ + this.a_offsets = gl.getAttribLocation( + program, goog.DEBUG ? 'a_offsets' : 'e'); + + /** + * @type {number} + */ + this.a_opacity = gl.getAttribLocation( + program, goog.DEBUG ? 'a_opacity' : 'f'); + + /** + * @type {number} + */ + this.a_position = gl.getAttribLocation( + program, goog.DEBUG ? 'a_position' : 'c'); + + /** + * @type {number} + */ + this.a_rotateWithView = gl.getAttribLocation( + program, goog.DEBUG ? 'a_rotateWithView' : 'g'); + + /** + * @type {number} + */ + this.a_texCoord = gl.getAttribLocation( + program, goog.DEBUG ? 'a_texCoord' : 'd'); +}; diff --git a/src/ol/render/webgl/imagereplay.js b/src/ol/render/webgl/imagereplay/index.js similarity index 98% rename from src/ol/render/webgl/imagereplay.js rename to src/ol/render/webgl/imagereplay/index.js index f662b72252..5549d88851 100644 --- a/src/ol/render/webgl/imagereplay.js +++ b/src/ol/render/webgl/imagereplay/index.js @@ -6,10 +6,7 @@ goog.require('ol.extent'); goog.require('ol.obj'); goog.require('ol.render.IReplayGroup'); goog.require('ol.render.VectorContext'); -goog.require('ol.render.webgl.imagereplay.shader.Default'); -goog.require('ol.render.webgl.imagereplay.shader.Default.Locations'); -goog.require('ol.render.webgl.imagereplay.shader.DefaultFragment'); -goog.require('ol.render.webgl.imagereplay.shader.DefaultVertex'); +goog.require('ol.renderer.webgl.imagereplay.defaultshader'); goog.require('ol.vec.Mat4'); goog.require('ol.webgl'); goog.require('ol.webgl.Buffer'); @@ -105,7 +102,7 @@ ol.render.webgl.ImageReplay = function(tolerance, maxExtent) { /** * @private - * @type {ol.render.webgl.imagereplay.shader.Default.Locations} + * @type {ol.renderer.webgl.imagereplay.defaultshader.Locations} */ this.defaultLocations_ = null; @@ -518,16 +515,16 @@ ol.render.webgl.ImageReplay.prototype.replay = function(context, // get the program var fragmentShader = - ol.render.webgl.imagereplay.shader.DefaultFragment.getInstance(); + ol.renderer.webgl.imagereplay.defaultshader.Fragment.getInstance(); var vertexShader = - ol.render.webgl.imagereplay.shader.DefaultVertex.getInstance(); + ol.renderer.webgl.imagereplay.defaultshader.Vertex.getInstance(); var program = context.getProgram(fragmentShader, vertexShader); // get the locations var locations; if (!this.defaultLocations_) { locations = - new ol.render.webgl.imagereplay.shader.Default.Locations(gl, program); + new ol.renderer.webgl.imagereplay.defaultshader.Locations(gl, program); this.defaultLocations_ = locations; } else { locations = this.defaultLocations_; diff --git a/src/ol/render/webgl/webglimagedefaultshader.js b/src/ol/render/webgl/webglimagedefaultshader.js deleted file mode 100644 index 95069eb2d6..0000000000 --- a/src/ol/render/webgl/webglimagedefaultshader.js +++ /dev/null @@ -1,147 +0,0 @@ -// This file is automatically generated, do not edit -goog.provide('ol.render.webgl.imagereplay.shader.Default'); -goog.provide('ol.render.webgl.imagereplay.shader.Default.Locations'); -goog.provide('ol.render.webgl.imagereplay.shader.DefaultFragment'); -goog.provide('ol.render.webgl.imagereplay.shader.DefaultVertex'); - -goog.require('ol.webgl.shader'); - - -/** - * @constructor - * @extends {ol.webgl.shader.Fragment} - * @struct - */ -ol.render.webgl.imagereplay.shader.DefaultFragment = function() { - ol.webgl.shader.Fragment.call(this, ol.render.webgl.imagereplay.shader.DefaultFragment.SOURCE); -}; -ol.inherits(ol.render.webgl.imagereplay.shader.DefaultFragment, ol.webgl.shader.Fragment); -goog.addSingletonGetter(ol.render.webgl.imagereplay.shader.DefaultFragment); - - -/** - * @const - * @type {string} - */ -ol.render.webgl.imagereplay.shader.DefaultFragment.DEBUG_SOURCE = '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'; - - -/** - * @const - * @type {string} - */ -ol.render.webgl.imagereplay.shader.DefaultFragment.OPTIMIZED_SOURCE = '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;}'; - - -/** - * @const - * @type {string} - */ -ol.render.webgl.imagereplay.shader.DefaultFragment.SOURCE = goog.DEBUG ? - ol.render.webgl.imagereplay.shader.DefaultFragment.DEBUG_SOURCE : - ol.render.webgl.imagereplay.shader.DefaultFragment.OPTIMIZED_SOURCE; - - -/** - * @constructor - * @extends {ol.webgl.shader.Vertex} - * @struct - */ -ol.render.webgl.imagereplay.shader.DefaultVertex = function() { - ol.webgl.shader.Vertex.call(this, ol.render.webgl.imagereplay.shader.DefaultVertex.SOURCE); -}; -ol.inherits(ol.render.webgl.imagereplay.shader.DefaultVertex, ol.webgl.shader.Vertex); -goog.addSingletonGetter(ol.render.webgl.imagereplay.shader.DefaultVertex); - - -/** - * @const - * @type {string} - */ -ol.render.webgl.imagereplay.shader.DefaultVertex.DEBUG_SOURCE = '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.);\n gl_Position = u_projectionMatrix * vec4(a_position, 0., 1.) + offsets;\n v_texCoord = a_texCoord;\n v_opacity = a_opacity;\n}\n\n\n'; - - -/** - * @const - * @type {string} - */ -ol.render.webgl.imagereplay.shader.DefaultVertex.OPTIMIZED_SOURCE = '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.);gl_Position=h*vec4(c,0.,1.)+offsets;a=d;b=f;}'; - - -/** - * @const - * @type {string} - */ -ol.render.webgl.imagereplay.shader.DefaultVertex.SOURCE = goog.DEBUG ? - ol.render.webgl.imagereplay.shader.DefaultVertex.DEBUG_SOURCE : - ol.render.webgl.imagereplay.shader.DefaultVertex.OPTIMIZED_SOURCE; - - -/** - * @constructor - * @param {WebGLRenderingContext} gl GL. - * @param {WebGLProgram} program Program. - * @struct - */ -ol.render.webgl.imagereplay.shader.Default.Locations = function(gl, program) { - - /** - * @type {WebGLUniformLocation} - */ - this.u_image = gl.getUniformLocation( - program, goog.DEBUG ? 'u_image' : 'l'); - - /** - * @type {WebGLUniformLocation} - */ - this.u_offsetRotateMatrix = gl.getUniformLocation( - program, goog.DEBUG ? 'u_offsetRotateMatrix' : 'j'); - - /** - * @type {WebGLUniformLocation} - */ - this.u_offsetScaleMatrix = gl.getUniformLocation( - program, goog.DEBUG ? 'u_offsetScaleMatrix' : 'i'); - - /** - * @type {WebGLUniformLocation} - */ - this.u_opacity = gl.getUniformLocation( - program, goog.DEBUG ? 'u_opacity' : 'k'); - - /** - * @type {WebGLUniformLocation} - */ - this.u_projectionMatrix = gl.getUniformLocation( - program, goog.DEBUG ? 'u_projectionMatrix' : 'h'); - - /** - * @type {number} - */ - this.a_offsets = gl.getAttribLocation( - program, goog.DEBUG ? 'a_offsets' : 'e'); - - /** - * @type {number} - */ - this.a_opacity = gl.getAttribLocation( - program, goog.DEBUG ? 'a_opacity' : 'f'); - - /** - * @type {number} - */ - this.a_position = gl.getAttribLocation( - program, goog.DEBUG ? 'a_position' : 'c'); - - /** - * @type {number} - */ - this.a_rotateWithView = gl.getAttribLocation( - program, goog.DEBUG ? 'a_rotateWithView' : 'g'); - - /** - * @type {number} - */ - this.a_texCoord = gl.getAttribLocation( - program, goog.DEBUG ? 'a_texCoord' : 'd'); -}; diff --git a/src/ol/renderer/webgl/webglmapdefault.glsl b/src/ol/renderer/webgl/defaultmapshader.glsl similarity index 84% rename from src/ol/renderer/webgl/webglmapdefault.glsl rename to src/ol/renderer/webgl/defaultmapshader.glsl index b07838dc3b..4ac4d9d2fd 100644 --- a/src/ol/renderer/webgl/webglmapdefault.glsl +++ b/src/ol/renderer/webgl/defaultmapshader.glsl @@ -1,5 +1,5 @@ -//! NAMESPACE=ol.renderer.webgl.map.shader.Default -//! CLASS=ol.renderer.webgl.map.shader.Default +//! NAMESPACE=ol.renderer.webgl.defaultmapshader +//! CLASS=ol.renderer.webgl.defaultmapshader //! COMMON diff --git a/src/ol/renderer/webgl/defaultmapshader.js b/src/ol/renderer/webgl/defaultmapshader.js new file mode 100644 index 0000000000..35d01d4003 --- /dev/null +++ b/src/ol/renderer/webgl/defaultmapshader.js @@ -0,0 +1,121 @@ +// This file is automatically generated, do not edit +goog.provide('ol.renderer.webgl.defaultmapshader'); + +goog.require('ol.webgl.Fragment'); +goog.require('ol.webgl.Vertex'); + + +/** + * @constructor + * @extends {ol.webgl.Fragment} + * @struct + */ +ol.renderer.webgl.defaultmapshader.Fragment = function() { + ol.webgl.Fragment.call(this, ol.renderer.webgl.defaultmapshader.Fragment.SOURCE); +}; +ol.inherits(ol.renderer.webgl.defaultmapshader.Fragment, ol.webgl.Fragment); +goog.addSingletonGetter(ol.renderer.webgl.defaultmapshader.Fragment); + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.defaultmapshader.Fragment.DEBUG_SOURCE = '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'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.defaultmapshader.Fragment.OPTIMIZED_SOURCE = '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;}'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.defaultmapshader.Fragment.SOURCE = goog.DEBUG ? + ol.renderer.webgl.defaultmapshader.Fragment.DEBUG_SOURCE : + ol.renderer.webgl.defaultmapshader.Fragment.OPTIMIZED_SOURCE; + + +/** + * @constructor + * @extends {ol.webgl.Vertex} + * @struct + */ +ol.renderer.webgl.defaultmapshader.Vertex = function() { + ol.webgl.Vertex.call(this, ol.renderer.webgl.defaultmapshader.Vertex.SOURCE); +}; +ol.inherits(ol.renderer.webgl.defaultmapshader.Vertex, ol.webgl.Vertex); +goog.addSingletonGetter(ol.renderer.webgl.defaultmapshader.Vertex); + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.defaultmapshader.Vertex.DEBUG_SOURCE = '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'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.defaultmapshader.Vertex.OPTIMIZED_SOURCE = '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;}'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.defaultmapshader.Vertex.SOURCE = goog.DEBUG ? + ol.renderer.webgl.defaultmapshader.Vertex.DEBUG_SOURCE : + ol.renderer.webgl.defaultmapshader.Vertex.OPTIMIZED_SOURCE; + + +/** + * @constructor + * @param {WebGLRenderingContext} gl GL. + * @param {WebGLProgram} program Program. + * @struct + */ +ol.renderer.webgl.defaultmapshader.Locations = function(gl, program) { + + /** + * @type {WebGLUniformLocation} + */ + this.u_opacity = gl.getUniformLocation( + program, goog.DEBUG ? 'u_opacity' : 'f'); + + /** + * @type {WebGLUniformLocation} + */ + this.u_projectionMatrix = gl.getUniformLocation( + program, goog.DEBUG ? 'u_projectionMatrix' : 'e'); + + /** + * @type {WebGLUniformLocation} + */ + this.u_texCoordMatrix = gl.getUniformLocation( + program, goog.DEBUG ? 'u_texCoordMatrix' : 'd'); + + /** + * @type {WebGLUniformLocation} + */ + this.u_texture = gl.getUniformLocation( + program, goog.DEBUG ? 'u_texture' : 'g'); + + /** + * @type {number} + */ + this.a_position = gl.getAttribLocation( + program, goog.DEBUG ? 'a_position' : 'b'); + + /** + * @type {number} + */ + this.a_texCoord = gl.getAttribLocation( + program, goog.DEBUG ? 'a_texCoord' : 'c'); +}; diff --git a/src/ol/renderer/webgl/layer.js b/src/ol/renderer/webgl/layer.js index c38cfef778..536289deb3 100644 --- a/src/ol/renderer/webgl/layer.js +++ b/src/ol/renderer/webgl/layer.js @@ -5,10 +5,7 @@ goog.require('ol.render.Event'); goog.require('ol.render.EventType'); goog.require('ol.render.webgl.Immediate'); goog.require('ol.renderer.Layer'); -goog.require('ol.renderer.webgl.map.shader.Default'); -goog.require('ol.renderer.webgl.map.shader.Default.Locations'); -goog.require('ol.renderer.webgl.map.shader.DefaultFragment'); -goog.require('ol.renderer.webgl.map.shader.DefaultVertex'); +goog.require('ol.renderer.webgl.defaultmapshader'); goog.require('ol.vec.Mat4'); goog.require('ol.webgl'); goog.require('ol.webgl.Buffer'); @@ -80,7 +77,7 @@ ol.renderer.webgl.Layer = function(mapRenderer, layer) { /** * @private - * @type {ol.renderer.webgl.map.shader.Default.Locations} + * @type {ol.renderer.webgl.defaultmapshader.Locations} */ this.defaultLocations_ = null; @@ -148,16 +145,15 @@ ol.renderer.webgl.Layer.prototype.composeFrame = function(frameState, layerState var gl = context.getGL(); - var fragmentShader = - ol.renderer.webgl.map.shader.DefaultFragment.getInstance(); - var vertexShader = ol.renderer.webgl.map.shader.DefaultVertex.getInstance(); + var fragmentShader = ol.renderer.webgl.defaultmapshader.Fragment.getInstance(); + var vertexShader = ol.renderer.webgl.defaultmapshader.Vertex.getInstance(); var program = context.getProgram(fragmentShader, vertexShader); var locations; if (!this.defaultLocations_) { locations = - new ol.renderer.webgl.map.shader.Default.Locations(gl, program); + new ol.renderer.webgl.defaultmapshader.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 5674335a78..564d1fdf2d 100644 --- a/src/ol/renderer/webgl/tilelayer.js +++ b/src/ol/renderer/webgl/tilelayer.js @@ -11,9 +11,7 @@ goog.require('ol.extent'); goog.require('ol.layer.Tile'); goog.require('ol.math'); goog.require('ol.renderer.webgl.Layer'); -goog.require('ol.renderer.webgl.tilelayer.shader.Fragment'); -goog.require('ol.renderer.webgl.tilelayer.shader.Locations'); -goog.require('ol.renderer.webgl.tilelayer.shader.Vertex'); +goog.require('ol.renderer.webgl.tilelayershader'); goog.require('ol.size'); goog.require('ol.webgl'); goog.require('ol.webgl.Buffer'); @@ -31,20 +29,20 @@ ol.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) { /** * @private - * @type {ol.webgl.shader.Fragment} + * @type {ol.webgl.Fragment} */ this.fragmentShader_ = - ol.renderer.webgl.tilelayer.shader.Fragment.getInstance(); + ol.renderer.webgl.tilelayershader.Fragment.getInstance(); /** * @private - * @type {ol.webgl.shader.Vertex} + * @type {ol.webgl.Vertex} */ - this.vertexShader_ = ol.renderer.webgl.tilelayer.shader.Vertex.getInstance(); + this.vertexShader_ = ol.renderer.webgl.tilelayershader.Vertex.getInstance(); /** * @private - * @type {ol.renderer.webgl.tilelayer.shader.Locations} + * @type {ol.renderer.webgl.tilelayershader.Locations} */ this.locations_ = null; @@ -213,7 +211,7 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame = function(frameState, layerS context.useProgram(program); if (!this.locations_) { this.locations_ = - new ol.renderer.webgl.tilelayer.shader.Locations(gl, program); + new ol.renderer.webgl.tilelayershader.Locations(gl, program); } context.bindBuffer(ol.webgl.ARRAY_BUFFER, this.renderArrayBuffer_); diff --git a/src/ol/renderer/webgl/webgltilelayer.glsl b/src/ol/renderer/webgl/tilelayershader.glsl similarity index 79% rename from src/ol/renderer/webgl/webgltilelayer.glsl rename to src/ol/renderer/webgl/tilelayershader.glsl index 5262f97c26..28ba7f6524 100644 --- a/src/ol/renderer/webgl/webgltilelayer.glsl +++ b/src/ol/renderer/webgl/tilelayershader.glsl @@ -1,5 +1,5 @@ -//! NAMESPACE=ol.renderer.webgl.tilelayer.shader -//! CLASS=ol.renderer.webgl.tilelayer.shader. +//! NAMESPACE=ol.renderer.webgl.tilelayershader +//! CLASS=ol.renderer.webgl.tilelayershader //! COMMON diff --git a/src/ol/renderer/webgl/tilelayershader.js b/src/ol/renderer/webgl/tilelayershader.js new file mode 100644 index 0000000000..11db8e3b39 --- /dev/null +++ b/src/ol/renderer/webgl/tilelayershader.js @@ -0,0 +1,109 @@ +// This file is automatically generated, do not edit +goog.provide('ol.renderer.webgl.tilelayershader'); + +goog.require('ol.webgl.Fragment'); +goog.require('ol.webgl.Vertex'); + + +/** + * @constructor + * @extends {ol.webgl.Fragment} + * @struct + */ +ol.renderer.webgl.tilelayershader.Fragment = function() { + ol.webgl.Fragment.call(this, ol.renderer.webgl.tilelayershader.Fragment.SOURCE); +}; +ol.inherits(ol.renderer.webgl.tilelayershader.Fragment, ol.webgl.Fragment); +goog.addSingletonGetter(ol.renderer.webgl.tilelayershader.Fragment); + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.tilelayershader.Fragment.DEBUG_SOURCE = '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'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.tilelayershader.Fragment.OPTIMIZED_SOURCE = 'precision mediump float;varying vec2 a;uniform sampler2D e;void main(void){gl_FragColor=texture2D(e,a);}'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.tilelayershader.Fragment.SOURCE = goog.DEBUG ? + ol.renderer.webgl.tilelayershader.Fragment.DEBUG_SOURCE : + ol.renderer.webgl.tilelayershader.Fragment.OPTIMIZED_SOURCE; + + +/** + * @constructor + * @extends {ol.webgl.Vertex} + * @struct + */ +ol.renderer.webgl.tilelayershader.Vertex = function() { + ol.webgl.Vertex.call(this, ol.renderer.webgl.tilelayershader.Vertex.SOURCE); +}; +ol.inherits(ol.renderer.webgl.tilelayershader.Vertex, ol.webgl.Vertex); +goog.addSingletonGetter(ol.renderer.webgl.tilelayershader.Vertex); + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.tilelayershader.Vertex.DEBUG_SOURCE = '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'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.tilelayershader.Vertex.OPTIMIZED_SOURCE = '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;}'; + + +/** + * @const + * @type {string} + */ +ol.renderer.webgl.tilelayershader.Vertex.SOURCE = goog.DEBUG ? + ol.renderer.webgl.tilelayershader.Vertex.DEBUG_SOURCE : + ol.renderer.webgl.tilelayershader.Vertex.OPTIMIZED_SOURCE; + + +/** + * @constructor + * @param {WebGLRenderingContext} gl GL. + * @param {WebGLProgram} program Program. + * @struct + */ +ol.renderer.webgl.tilelayershader.Locations = function(gl, program) { + + /** + * @type {WebGLUniformLocation} + */ + this.u_texture = gl.getUniformLocation( + program, goog.DEBUG ? 'u_texture' : 'e'); + + /** + * @type {WebGLUniformLocation} + */ + this.u_tileOffset = gl.getUniformLocation( + program, goog.DEBUG ? 'u_tileOffset' : 'd'); + + /** + * @type {number} + */ + this.a_position = gl.getAttribLocation( + program, goog.DEBUG ? 'a_position' : 'b'); + + /** + * @type {number} + */ + this.a_texCoord = gl.getAttribLocation( + program, goog.DEBUG ? 'a_texCoord' : 'c'); +}; diff --git a/src/ol/renderer/webgl/webglmapdefaultshader.js b/src/ol/renderer/webgl/webglmapdefaultshader.js deleted file mode 100644 index b9b963fe3b..0000000000 --- a/src/ol/renderer/webgl/webglmapdefaultshader.js +++ /dev/null @@ -1,123 +0,0 @@ -// This file is automatically generated, do not edit -goog.provide('ol.renderer.webgl.map.shader.Default'); -goog.provide('ol.renderer.webgl.map.shader.Default.Locations'); -goog.provide('ol.renderer.webgl.map.shader.DefaultFragment'); -goog.provide('ol.renderer.webgl.map.shader.DefaultVertex'); - -goog.require('ol.webgl.shader'); - - -/** - * @constructor - * @extends {ol.webgl.shader.Fragment} - * @struct - */ -ol.renderer.webgl.map.shader.DefaultFragment = function() { - ol.webgl.shader.Fragment.call(this, ol.renderer.webgl.map.shader.DefaultFragment.SOURCE); -}; -ol.inherits(ol.renderer.webgl.map.shader.DefaultFragment, ol.webgl.shader.Fragment); -goog.addSingletonGetter(ol.renderer.webgl.map.shader.DefaultFragment); - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.map.shader.DefaultFragment.DEBUG_SOURCE = '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'; - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.map.shader.DefaultFragment.OPTIMIZED_SOURCE = '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;}'; - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.map.shader.DefaultFragment.SOURCE = goog.DEBUG ? - ol.renderer.webgl.map.shader.DefaultFragment.DEBUG_SOURCE : - ol.renderer.webgl.map.shader.DefaultFragment.OPTIMIZED_SOURCE; - - -/** - * @constructor - * @extends {ol.webgl.shader.Vertex} - * @struct - */ -ol.renderer.webgl.map.shader.DefaultVertex = function() { - ol.webgl.shader.Vertex.call(this, ol.renderer.webgl.map.shader.DefaultVertex.SOURCE); -}; -ol.inherits(ol.renderer.webgl.map.shader.DefaultVertex, ol.webgl.shader.Vertex); -goog.addSingletonGetter(ol.renderer.webgl.map.shader.DefaultVertex); - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.map.shader.DefaultVertex.DEBUG_SOURCE = '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'; - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.map.shader.DefaultVertex.OPTIMIZED_SOURCE = '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;}'; - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.map.shader.DefaultVertex.SOURCE = goog.DEBUG ? - ol.renderer.webgl.map.shader.DefaultVertex.DEBUG_SOURCE : - ol.renderer.webgl.map.shader.DefaultVertex.OPTIMIZED_SOURCE; - - -/** - * @constructor - * @param {WebGLRenderingContext} gl GL. - * @param {WebGLProgram} program Program. - * @struct - */ -ol.renderer.webgl.map.shader.Default.Locations = function(gl, program) { - - /** - * @type {WebGLUniformLocation} - */ - this.u_opacity = gl.getUniformLocation( - program, goog.DEBUG ? 'u_opacity' : 'f'); - - /** - * @type {WebGLUniformLocation} - */ - this.u_projectionMatrix = gl.getUniformLocation( - program, goog.DEBUG ? 'u_projectionMatrix' : 'e'); - - /** - * @type {WebGLUniformLocation} - */ - this.u_texCoordMatrix = gl.getUniformLocation( - program, goog.DEBUG ? 'u_texCoordMatrix' : 'd'); - - /** - * @type {WebGLUniformLocation} - */ - this.u_texture = gl.getUniformLocation( - program, goog.DEBUG ? 'u_texture' : 'g'); - - /** - * @type {number} - */ - this.a_position = gl.getAttribLocation( - program, goog.DEBUG ? 'a_position' : 'b'); - - /** - * @type {number} - */ - this.a_texCoord = gl.getAttribLocation( - program, goog.DEBUG ? 'a_texCoord' : 'c'); -}; diff --git a/src/ol/renderer/webgl/webgltilelayershader.js b/src/ol/renderer/webgl/webgltilelayershader.js deleted file mode 100644 index db10984478..0000000000 --- a/src/ol/renderer/webgl/webgltilelayershader.js +++ /dev/null @@ -1,111 +0,0 @@ -// This file is automatically generated, do not edit -goog.provide('ol.renderer.webgl.tilelayer.shader'); -goog.provide('ol.renderer.webgl.tilelayer.shader.Locations'); -goog.provide('ol.renderer.webgl.tilelayer.shader.Fragment'); -goog.provide('ol.renderer.webgl.tilelayer.shader.Vertex'); - -goog.require('ol.webgl.shader'); - - -/** - * @constructor - * @extends {ol.webgl.shader.Fragment} - * @struct - */ -ol.renderer.webgl.tilelayer.shader.Fragment = function() { - ol.webgl.shader.Fragment.call(this, ol.renderer.webgl.tilelayer.shader.Fragment.SOURCE); -}; -ol.inherits(ol.renderer.webgl.tilelayer.shader.Fragment, ol.webgl.shader.Fragment); -goog.addSingletonGetter(ol.renderer.webgl.tilelayer.shader.Fragment); - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.tilelayer.shader.Fragment.DEBUG_SOURCE = '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'; - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.tilelayer.shader.Fragment.OPTIMIZED_SOURCE = 'precision mediump float;varying vec2 a;uniform sampler2D e;void main(void){gl_FragColor=texture2D(e,a);}'; - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.tilelayer.shader.Fragment.SOURCE = goog.DEBUG ? - ol.renderer.webgl.tilelayer.shader.Fragment.DEBUG_SOURCE : - ol.renderer.webgl.tilelayer.shader.Fragment.OPTIMIZED_SOURCE; - - -/** - * @constructor - * @extends {ol.webgl.shader.Vertex} - * @struct - */ -ol.renderer.webgl.tilelayer.shader.Vertex = function() { - ol.webgl.shader.Vertex.call(this, ol.renderer.webgl.tilelayer.shader.Vertex.SOURCE); -}; -ol.inherits(ol.renderer.webgl.tilelayer.shader.Vertex, ol.webgl.shader.Vertex); -goog.addSingletonGetter(ol.renderer.webgl.tilelayer.shader.Vertex); - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.tilelayer.shader.Vertex.DEBUG_SOURCE = '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'; - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.tilelayer.shader.Vertex.OPTIMIZED_SOURCE = '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;}'; - - -/** - * @const - * @type {string} - */ -ol.renderer.webgl.tilelayer.shader.Vertex.SOURCE = goog.DEBUG ? - ol.renderer.webgl.tilelayer.shader.Vertex.DEBUG_SOURCE : - ol.renderer.webgl.tilelayer.shader.Vertex.OPTIMIZED_SOURCE; - - -/** - * @constructor - * @param {WebGLRenderingContext} gl GL. - * @param {WebGLProgram} program Program. - * @struct - */ -ol.renderer.webgl.tilelayer.shader.Locations = function(gl, program) { - - /** - * @type {WebGLUniformLocation} - */ - this.u_texture = gl.getUniformLocation( - program, goog.DEBUG ? 'u_texture' : 'e'); - - /** - * @type {WebGLUniformLocation} - */ - this.u_tileOffset = gl.getUniformLocation( - program, goog.DEBUG ? 'u_tileOffset' : 'd'); - - /** - * @type {number} - */ - this.a_position = gl.getAttribLocation( - program, goog.DEBUG ? 'a_position' : 'b'); - - /** - * @type {number} - */ - this.a_texCoord = gl.getAttribLocation( - program, goog.DEBUG ? 'a_texCoord' : 'c'); -}; diff --git a/src/ol/webgl/context.js b/src/ol/webgl/context.js index e2cfa0b213..1a5f084e2d 100644 --- a/src/ol/webgl/context.js +++ b/src/ol/webgl/context.js @@ -233,8 +233,8 @@ ol.webgl.Context.prototype.getShader = function(shaderObject) { * Get the program from the cache if it's in the cache. Otherwise create * the WebGL program, attach the shaders to it, and add an entry to the * cache. - * @param {ol.webgl.shader.Fragment} fragmentShaderObject Fragment shader. - * @param {ol.webgl.shader.Vertex} vertexShaderObject Vertex shader. + * @param {ol.webgl.Fragment} fragmentShaderObject Fragment shader. + * @param {ol.webgl.Vertex} vertexShaderObject Vertex shader. * @return {WebGLProgram} Program. */ ol.webgl.Context.prototype.getProgram = function( diff --git a/src/ol/webgl/fragment.js b/src/ol/webgl/fragment.js new file mode 100644 index 0000000000..49bb0f0445 --- /dev/null +++ b/src/ol/webgl/fragment.js @@ -0,0 +1,25 @@ +goog.provide('ol.webgl.Fragment'); + +goog.require('ol'); +goog.require('ol.webgl'); +goog.require('ol.webgl.Shader'); + + +/** + * @constructor + * @extends {ol.webgl.Shader} + * @param {string} source Source. + * @struct + */ +ol.webgl.Fragment = function(source) { + ol.webgl.Shader.call(this, source); +}; +ol.inherits(ol.webgl.Fragment, ol.webgl.Shader); + + +/** + * @inheritDoc + */ +ol.webgl.Fragment.prototype.getType = function() { + return ol.webgl.FRAGMENT_SHADER; +}; diff --git a/src/ol/webgl/shader.js b/src/ol/webgl/shader.js index 6c5de0d5ea..1a26cccf1c 100644 --- a/src/ol/webgl/shader.js +++ b/src/ol/webgl/shader.js @@ -1,7 +1,4 @@ -goog.provide('ol.webgl.Fragment'); goog.provide('ol.webgl.Shader'); -goog.provide('ol.webgl.Vertex'); -goog.provide('ol.webgl.shader'); goog.require('ol.functions'); goog.require('ol.webgl'); @@ -42,43 +39,3 @@ ol.webgl.Shader.prototype.getSource = function() { * @return {boolean} Is animated? */ ol.webgl.Shader.prototype.isAnimated = ol.functions.FALSE; - - -/** - * @constructor - * @extends {ol.webgl.Shader} - * @param {string} source Source. - * @struct - */ -ol.webgl.shader.Fragment = function(source) { - ol.webgl.Shader.call(this, source); -}; -ol.inherits(ol.webgl.shader.Fragment, ol.webgl.Shader); - - -/** - * @inheritDoc - */ -ol.webgl.shader.Fragment.prototype.getType = function() { - return ol.webgl.FRAGMENT_SHADER; -}; - - -/** - * @constructor - * @extends {ol.webgl.Shader} - * @param {string} source Source. - * @struct - */ -ol.webgl.shader.Vertex = function(source) { - ol.webgl.Shader.call(this, source); -}; -ol.inherits(ol.webgl.shader.Vertex, ol.webgl.Shader); - - -/** - * @inheritDoc - */ -ol.webgl.shader.Vertex.prototype.getType = function() { - return ol.webgl.VERTEX_SHADER; -}; diff --git a/src/ol/webgl/shader.mustache b/src/ol/webgl/shader.mustache index 401fffbfd6..f50b0ac4ba 100644 --- a/src/ol/webgl/shader.mustache +++ b/src/ol/webgl/shader.mustache @@ -1,80 +1,78 @@ // This file is automatically generated, do not edit goog.provide('{{namespace}}'); -goog.provide('{{namespace}}.Locations'); -goog.provide('{{className}}Fragment'); -goog.provide('{{className}}Vertex'); -goog.require('ol.webgl.shader'); +goog.require('ol.webgl.Fragment'); +goog.require('ol.webgl.Vertex'); /** * @constructor - * @extends {ol.webgl.shader.Fragment} + * @extends {ol.webgl.Fragment} * @struct */ -{{className}}Fragment = function() { - ol.webgl.shader.Fragment.call(this, {{className}}Fragment.SOURCE); +{{className}}.Fragment = function() { + ol.webgl.Fragment.call(this, {{className}}.Fragment.SOURCE); }; -ol.inherits({{className}}Fragment, ol.webgl.shader.Fragment); -goog.addSingletonGetter({{className}}Fragment); +ol.inherits({{className}}.Fragment, ol.webgl.Fragment); +goog.addSingletonGetter({{className}}.Fragment); /** * @const * @type {string} */ -{{className}}Fragment.DEBUG_SOURCE = 'precision mediump float;\n{{{getOriginalFragmentSource}}}'; +{{className}}.Fragment.DEBUG_SOURCE = 'precision mediump float;\n{{{getOriginalFragmentSource}}}'; /** * @const * @type {string} */ -{{className}}Fragment.OPTIMIZED_SOURCE = 'precision mediump float;{{{getFragmentSource}}}'; +{{className}}.Fragment.OPTIMIZED_SOURCE = 'precision mediump float;{{{getFragmentSource}}}'; /** * @const * @type {string} */ -{{className}}Fragment.SOURCE = goog.DEBUG ? - {{className}}Fragment.DEBUG_SOURCE : - {{className}}Fragment.OPTIMIZED_SOURCE; +{{className}}.Fragment.SOURCE = goog.DEBUG ? + {{className}}.Fragment.DEBUG_SOURCE : + {{className}}.Fragment.OPTIMIZED_SOURCE; /** * @constructor - * @extends {ol.webgl.shader.Vertex} + * @extends {ol.webgl.Vertex} * @struct */ -{{className}}Vertex = function() { - ol.webgl.shader.Vertex.call(this, {{className}}Vertex.SOURCE); +{{className}}.Vertex = function() { + ol.webgl.Vertex.call(this, {{className}}.Vertex.SOURCE); }; -ol.inherits({{className}}Vertex, ol.webgl.shader.Vertex); -goog.addSingletonGetter({{className}}Vertex); +ol.inherits({{className}}.Vertex, ol.webgl.Vertex); +goog.addSingletonGetter({{className}}.Vertex); /** * @const * @type {string} */ -{{className}}Vertex.DEBUG_SOURCE = '{{{getOriginalVertexSource}}}'; +{{className}}.Vertex.DEBUG_SOURCE = '{{{getOriginalVertexSource}}}'; /** * @const * @type {string} */ -{{className}}Vertex.OPTIMIZED_SOURCE = '{{{getVertexSource}}}'; +{{className}}.Vertex.OPTIMIZED_SOURCE = '{{{getVertexSource}}}'; /** * @const * @type {string} */ -{{className}}Vertex.SOURCE = goog.DEBUG ? - {{className}}Vertex.DEBUG_SOURCE : - {{className}}Vertex.OPTIMIZED_SOURCE; +{{className}}.Vertex.SOURCE = goog.DEBUG ? + {{className}}.Vertex.DEBUG_SOURCE : + {{className}}.Vertex.OPTIMIZED_SOURCE; /** diff --git a/src/ol/webgl/vertex.js b/src/ol/webgl/vertex.js new file mode 100644 index 0000000000..024c7dc012 --- /dev/null +++ b/src/ol/webgl/vertex.js @@ -0,0 +1,25 @@ +goog.provide('ol.webgl.Vertex'); + +goog.require('ol'); +goog.require('ol.webgl'); +goog.require('ol.webgl.Shader'); + + +/** + * @constructor + * @extends {ol.webgl.Shader} + * @param {string} source Source. + * @struct + */ +ol.webgl.Vertex = function(source) { + ol.webgl.Shader.call(this, source); +}; +ol.inherits(ol.webgl.Vertex, ol.webgl.Shader); + + +/** + * @inheritDoc + */ +ol.webgl.Vertex.prototype.getType = function() { + return ol.webgl.VERTEX_SHADER; +};