Refactor glsl-unit templates

This abuses the template system to allow both a single anonymous shader
and multiple named shaders to be defined in a namespace.
This commit is contained in:
Tom Payne
2013-03-25 15:49:58 +01:00
parent 24cfd8a9be
commit c6cd3e0227
5 changed files with 31 additions and 29 deletions

View File

@@ -1,4 +1,5 @@
//! NAMESPACE=ol.renderer.webgl.map
//! NAMESPACE=ol.renderer.webgl.map.shader
//! CLASS=ol.renderer.webgl.map.shader.
//! COMMON

View File

@@ -14,7 +14,7 @@ goog.addSingletonGetter(ol.renderer.webgl.map.shader.Fragment);
* @const
* @type {string}
*/
ol.renderer.webgl.map.shader.Fragment.DEBUG_SOURCE = 'precision mediump float;\n//! NAMESPACE=ol.renderer.webgl.map\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! FRAGMENT\n// @see https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.cpp\nuniform mat4 u_colorMatrix;\nuniform float u_opacity;\nuniform sampler2D u_texture;\n\nvoid main(void) {\n vec4 texColor = texture2D(u_texture, v_texCoord);\n gl_FragColor.rgb = (u_colorMatrix * vec4(texColor.rgb, 1.)).rgb;\n gl_FragColor.a = texColor.a * u_opacity;\n}\n\n';
ol.renderer.webgl.map.shader.Fragment.DEBUG_SOURCE = 'precision mediump float;\n//! NAMESPACE=ol.renderer.webgl.map.shader\n//! CLASS=ol.renderer.webgl.map.shader.\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! FRAGMENT\n// @see https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.cpp\nuniform mat4 u_colorMatrix;\nuniform float u_opacity;\nuniform sampler2D u_texture;\n\nvoid main(void) {\n vec4 texColor = texture2D(u_texture, v_texCoord);\n gl_FragColor.rgb = (u_colorMatrix * vec4(texColor.rgb, 1.)).rgb;\n gl_FragColor.a = texColor.a * u_opacity;\n}\n\n';
/**
* @const
* @type {string}
@@ -40,7 +40,7 @@ goog.addSingletonGetter(ol.renderer.webgl.map.shader.Vertex);
* @const
* @type {string}
*/
ol.renderer.webgl.map.shader.Vertex.DEBUG_SOURCE = '//! NAMESPACE=ol.renderer.webgl.map\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! VERTEX\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';
ol.renderer.webgl.map.shader.Vertex.DEBUG_SOURCE = '//! NAMESPACE=ol.renderer.webgl.map.shader\n//! CLASS=ol.renderer.webgl.map.shader.\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! VERTEX\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}

View File

@@ -1,4 +1,5 @@
//! NAMESPACE=ol.renderer.webgl.tilelayer
//! NAMESPACE=ol.renderer.webgl.tilelayer.shader
//! CLASS=ol.renderer.webgl.tilelayer.shader.
//! COMMON

View File

@@ -14,7 +14,7 @@ goog.addSingletonGetter(ol.renderer.webgl.tilelayer.shader.Fragment);
* @const
* @type {string}
*/
ol.renderer.webgl.tilelayer.shader.Fragment.DEBUG_SOURCE = 'precision mediump float;\n//! NAMESPACE=ol.renderer.webgl.tilelayer\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! FRAGMENT\nuniform sampler2D u_texture;\n\nvoid main(void) {\n gl_FragColor = texture2D(u_texture, v_texCoord);\n}\n\n';
ol.renderer.webgl.tilelayer.shader.Fragment.DEBUG_SOURCE = 'precision mediump float;\n//! NAMESPACE=ol.renderer.webgl.tilelayer.shader\n//! CLASS=ol.renderer.webgl.tilelayer.shader.\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! FRAGMENT\nuniform sampler2D u_texture;\n\nvoid main(void) {\n gl_FragColor = texture2D(u_texture, v_texCoord);\n}\n\n';
/**
* @const
* @type {string}
@@ -40,7 +40,7 @@ goog.addSingletonGetter(ol.renderer.webgl.tilelayer.shader.Vertex);
* @const
* @type {string}
*/
ol.renderer.webgl.tilelayer.shader.Vertex.DEBUG_SOURCE = '//! NAMESPACE=ol.renderer.webgl.tilelayer\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! VERTEX\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';
ol.renderer.webgl.tilelayer.shader.Vertex.DEBUG_SOURCE = '//! NAMESPACE=ol.renderer.webgl.tilelayer.shader\n//! CLASS=ol.renderer.webgl.tilelayer.shader.\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! VERTEX\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}

View File

@@ -1,5 +1,5 @@
// This file is automatically generated, do not edit
goog.provide('{{namespace}}.shader');
goog.provide('{{namespace}}');
goog.require('ol.webgl.shader');
@@ -9,34 +9,34 @@ goog.require('ol.webgl.shader');
* @constructor
* @extends {ol.webgl.shader.Fragment}
*/
{{namespace}}.shader.Fragment = function() {
goog.base(this, {{namespace}}.shader.Fragment.SOURCE);
{{className}}Fragment = function() {
goog.base(this, {{className}}Fragment.SOURCE);
};
goog.inherits({{namespace}}.shader.Fragment, ol.webgl.shader.Fragment);
goog.addSingletonGetter({{namespace}}.shader.Fragment);
goog.inherits({{className}}Fragment, ol.webgl.shader.Fragment);
goog.addSingletonGetter({{className}}Fragment);
/**
* @const
* @type {string}
*/
{{namespace}}.shader.Fragment.DEBUG_SOURCE = 'precision mediump float;\n{{getOriginalFragmentSource}}';
{{className}}Fragment.DEBUG_SOURCE = 'precision mediump float;\n{{getOriginalFragmentSource}}';
/**
* @const
* @type {string}
*/
{{namespace}}.shader.Fragment.OPTIMIZED_SOURCE = 'precision mediump float;{{getFragmentSource}}';
{{className}}Fragment.OPTIMIZED_SOURCE = 'precision mediump float;{{getFragmentSource}}';
/**
* @const
* @type {string}
*/
{{namespace}}.shader.Fragment.SOURCE = goog.DEBUG ?
{{namespace}}.shader.Fragment.DEBUG_SOURCE :
{{namespace}}.shader.Fragment.OPTIMIZED_SOURCE;
{{className}}Fragment.SOURCE = goog.DEBUG ?
{{className}}Fragment.DEBUG_SOURCE :
{{className}}Fragment.OPTIMIZED_SOURCE;
@@ -44,40 +44,40 @@ goog.addSingletonGetter({{namespace}}.shader.Fragment);
* @constructor
* @extends {ol.webgl.shader.Vertex}
*/
{{namespace}}.shader.Vertex = function() {
goog.base(this, {{namespace}}.shader.Vertex.SOURCE);
{{className}}Vertex = function() {
goog.base(this, {{className}}Vertex.SOURCE);
};
goog.inherits({{namespace}}.shader.Vertex, ol.webgl.shader.Vertex);
goog.addSingletonGetter({{namespace}}.shader.Vertex);
goog.inherits({{className}}Vertex, ol.webgl.shader.Vertex);
goog.addSingletonGetter({{className}}Vertex);
/**
* @const
* @type {string}
*/
{{namespace}}.shader.Vertex.DEBUG_SOURCE = '{{getOriginalVertexSource}}';
{{className}}Vertex.DEBUG_SOURCE = '{{getOriginalVertexSource}}';
/**
* @const
* @type {string}
*/
{{namespace}}.shader.Vertex.OPTIMIZED_SOURCE = '{{getVertexSource}}';
{{className}}Vertex.OPTIMIZED_SOURCE = '{{getVertexSource}}';
/**
* @const
* @type {string}
*/
{{namespace}}.shader.Vertex.SOURCE = goog.DEBUG ?
{{namespace}}.shader.Vertex.DEBUG_SOURCE :
{{namespace}}.shader.Vertex.OPTIMIZED_SOURCE;
{{className}}Vertex.SOURCE = goog.DEBUG ?
{{className}}Vertex.DEBUG_SOURCE :
{{className}}Vertex.OPTIMIZED_SOURCE;
/**
* @constructor
*/
{{namespace}}.shader.uniform = function() {};
{{namespace}}.uniform = function() {};
{{#getUniforms}}
@@ -85,7 +85,7 @@ goog.addSingletonGetter({{namespace}}.shader.Vertex);
* @const
* @type {string}
*/
{{namespace}}.shader.uniform.{{originalName}} =
{{namespace}}.uniform.{{originalName}} =
goog.DEBUG ? '{{originalName}}' : '{{shortName}}';
{{/getUniforms}}
@@ -93,7 +93,7 @@ goog.addSingletonGetter({{namespace}}.shader.Vertex);
/**
* @constructor
*/
{{namespace}}.shader.attribute = function() {};
{{namespace}}.attribute = function() {};
{{#getAttributes}}
@@ -101,6 +101,6 @@ goog.addSingletonGetter({{namespace}}.shader.Vertex);
* @const
* @type {string}
*/
{{namespace}}.shader.attribute.{{originalName}} =
{{namespace}}.attribute.{{originalName}} =
goog.DEBUG ? '{{originalName}}' : '{{shortName}}';
{{/getAttributes}}