Add infrastructure for glsl-unit
This commit is contained in:
50
build.py
50
build.py
@@ -21,6 +21,7 @@ if sys.platform == 'win32':
|
|||||||
variables.JAVA = os.path.join(
|
variables.JAVA = os.path.join(
|
||||||
ProgramFiles, 'Java', 'jre7', 'bin', 'java.exe')
|
ProgramFiles, 'Java', 'jre7', 'bin', 'java.exe')
|
||||||
variables.JSDOC = 'jsdoc' # FIXME
|
variables.JSDOC = 'jsdoc' # FIXME
|
||||||
|
variables.NODE = 'node'
|
||||||
variables.PYTHON = os.path.join(Python27, 'python.exe')
|
variables.PYTHON = os.path.join(Python27, 'python.exe')
|
||||||
PHANTOMJS_WINDOWS_ZIP = 'build/phantomjs-1.8.1-windows.zip'
|
PHANTOMJS_WINDOWS_ZIP = 'build/phantomjs-1.8.1-windows.zip'
|
||||||
# FIXME we should not need both a pake variable and a Python constant here
|
# FIXME we should not need both a pake variable and a Python constant here
|
||||||
@@ -34,9 +35,12 @@ else:
|
|||||||
variables.JAVA = 'java'
|
variables.JAVA = 'java'
|
||||||
variables.JAR = 'jar'
|
variables.JAR = 'jar'
|
||||||
variables.JSDOC = 'jsdoc'
|
variables.JSDOC = 'jsdoc'
|
||||||
|
variables.NODE = 'node'
|
||||||
variables.PYTHON = 'python'
|
variables.PYTHON = 'python'
|
||||||
variables.PHANTOMJS = 'phantomjs'
|
variables.PHANTOMJS = 'phantomjs'
|
||||||
|
|
||||||
|
TEMPLATE_GLSL_COMPILER_JS = '../glsl-unit/bin/template_glsl_compiler.js'
|
||||||
|
|
||||||
variables.BRANCH = output(
|
variables.BRANCH = output(
|
||||||
'%(GIT)s', 'rev-parse', '--abbrev-ref', 'HEAD').strip()
|
'%(GIT)s', 'rev-parse', '--abbrev-ref', 'HEAD').strip()
|
||||||
|
|
||||||
@@ -73,13 +77,21 @@ INTERNAL_SRC = [
|
|||||||
'build/src/internal/src/requireall.js',
|
'build/src/internal/src/requireall.js',
|
||||||
'build/src/internal/src/types.js']
|
'build/src/internal/src/types.js']
|
||||||
|
|
||||||
|
GLSL_SRC = [path
|
||||||
|
for path in ifind('src')
|
||||||
|
if path.endswith('.glsl')]
|
||||||
|
|
||||||
|
SHADER_SRC = [path.replace('.glsl', 'shader.js')
|
||||||
|
for path in GLSL_SRC]
|
||||||
|
|
||||||
SPEC = [path
|
SPEC = [path
|
||||||
for path in ifind('test/spec')
|
for path in ifind('test/spec')
|
||||||
if path.endswith('.js')]
|
if path.endswith('.js')]
|
||||||
|
|
||||||
SRC = [path
|
SRC = [path
|
||||||
for path in ifind('src/ol')
|
for path in ifind('src/ol')
|
||||||
if path.endswith('.js')]
|
if path.endswith('.js')
|
||||||
|
if path not in SHADER_SRC]
|
||||||
|
|
||||||
PLOVR_JAR = 'bin/plovr-eba786b34df9.jar'
|
PLOVR_JAR = 'bin/plovr-eba786b34df9.jar'
|
||||||
PLOVR_JAR_MD5 = '20eac8ccc4578676511cf7ccbfc65100'
|
PLOVR_JAR_MD5 = '20eac8ccc4578676511cf7ccbfc65100'
|
||||||
@@ -121,22 +133,22 @@ def build_ol_css(t):
|
|||||||
t.touch()
|
t.touch()
|
||||||
|
|
||||||
|
|
||||||
@target('build/ol.js', PLOVR_JAR, SRC, EXTERNAL_SRC, 'base.json',
|
@target('build/ol.js', PLOVR_JAR, SRC, EXTERNAL_SRC, SHADER_SRC,
|
||||||
'build/ol.json')
|
'base.json', 'build/ol.json')
|
||||||
def build_ol_js(t):
|
def build_ol_js(t):
|
||||||
t.output('%(JAVA)s', '-jar', PLOVR_JAR, 'build', 'build/ol.json')
|
t.output('%(JAVA)s', '-jar', PLOVR_JAR, 'build', 'build/ol.json')
|
||||||
report_sizes(t)
|
report_sizes(t)
|
||||||
|
|
||||||
|
|
||||||
@target('build/ol-simple.js', PLOVR_JAR, SRC, INTERNAL_SRC, 'base.json',
|
@target('build/ol-simple.js', PLOVR_JAR, SRC, INTERNAL_SRC, SHADER_SRC,
|
||||||
'build/ol.json', 'build/ol-simple.json')
|
'base.json', 'build/ol.json', 'build/ol-simple.json')
|
||||||
def build_ol_simple_js(t):
|
def build_ol_simple_js(t):
|
||||||
t.output('%(JAVA)s', '-jar', PLOVR_JAR, 'build', 'build/ol-simple.json')
|
t.output('%(JAVA)s', '-jar', PLOVR_JAR, 'build', 'build/ol-simple.json')
|
||||||
report_sizes(t)
|
report_sizes(t)
|
||||||
|
|
||||||
|
|
||||||
@target('build/ol-whitespace.js', PLOVR_JAR, SRC, INTERNAL_SRC, 'base.json',
|
@target('build/ol-whitespace.js', PLOVR_JAR, SRC, INTERNAL_SRC, SHADER_SRC,
|
||||||
'build/ol.json', 'build/ol-whitespace.json')
|
'base.json', 'build/ol.json', 'build/ol-whitespace.json')
|
||||||
def build_ol_whitespace_js(t):
|
def build_ol_whitespace_js(t):
|
||||||
t.output('%(JAVA)s', '-jar', PLOVR_JAR,
|
t.output('%(JAVA)s', '-jar', PLOVR_JAR,
|
||||||
'build', 'build/ol-whitespace.json')
|
'build', 'build/ol-whitespace.json')
|
||||||
@@ -146,8 +158,8 @@ def build_ol_whitespace_js(t):
|
|||||||
virtual('build-all', 'build/ol-all.js')
|
virtual('build-all', 'build/ol-all.js')
|
||||||
|
|
||||||
|
|
||||||
@target('build/ol-all.js', PLOVR_JAR, SRC, INTERNAL_SRC, 'base.json',
|
@target('build/ol-all.js', PLOVR_JAR, SRC, INTERNAL_SRC, SHADER_SRC,
|
||||||
'build/ol-all.json')
|
'base.json', 'build/ol-all.json')
|
||||||
def build_ol_all_js(t):
|
def build_ol_all_js(t):
|
||||||
t.output('%(JAVA)s', '-jar', PLOVR_JAR, 'build', 'build/ol-all.json')
|
t.output('%(JAVA)s', '-jar', PLOVR_JAR, 'build', 'build/ol-all.json')
|
||||||
|
|
||||||
@@ -173,6 +185,18 @@ def build_src_external_src_types_js(t):
|
|||||||
'--typedef', 'src/objectliterals.exports')
|
'--typedef', 'src/objectliterals.exports')
|
||||||
|
|
||||||
|
|
||||||
|
for glsl_src in GLSL_SRC:
|
||||||
|
def shader_src_helper(glsl_src):
|
||||||
|
@target(glsl_src.replace('.glsl', 'shader.js'), glsl_src,
|
||||||
|
'src/ol/renderer/webgl/shader.mustache')
|
||||||
|
def shader_src(t):
|
||||||
|
t.run('%(NODE)s', TEMPLATE_GLSL_COMPILER_JS,
|
||||||
|
'--input', glsl_src,
|
||||||
|
'--template', 'src/ol/renderer/webgl/shader.mustache',
|
||||||
|
'--output', t.name)
|
||||||
|
shader_src_helper(glsl_src)
|
||||||
|
|
||||||
|
|
||||||
def _build_require_list(dependencies, output_file_name):
|
def _build_require_list(dependencies, output_file_name):
|
||||||
requires = set()
|
requires = set()
|
||||||
for dependency in dependencies:
|
for dependency in dependencies:
|
||||||
@@ -185,7 +209,7 @@ def _build_require_list(dependencies, output_file_name):
|
|||||||
f.write('goog.require(\'%s\');\n' % (require,))
|
f.write('goog.require(\'%s\');\n' % (require,))
|
||||||
|
|
||||||
|
|
||||||
@target('build/src/internal/src/requireall.js', SRC)
|
@target('build/src/internal/src/requireall.js', SRC, SHADER_SRC)
|
||||||
def build_src_internal_src_requireall_js(t):
|
def build_src_internal_src_requireall_js(t):
|
||||||
_build_require_list(t.dependencies, t.name)
|
_build_require_list(t.dependencies, t.name)
|
||||||
|
|
||||||
@@ -252,7 +276,7 @@ def examples_star_combined_js(name, match):
|
|||||||
t.output('%(JAVA)s', '-jar', PLOVR_JAR, 'build',
|
t.output('%(JAVA)s', '-jar', PLOVR_JAR, 'build',
|
||||||
'examples/%(id)s.json' % match.groupdict())
|
'examples/%(id)s.json' % match.groupdict())
|
||||||
report_sizes(t)
|
report_sizes(t)
|
||||||
dependencies = [PLOVR_JAR, SRC, INTERNAL_SRC, 'base.json',
|
dependencies = [PLOVR_JAR, SRC, INTERNAL_SRC, SHADER_SRC, 'base.json',
|
||||||
'examples/%(id)s.js' % match.groupdict(),
|
'examples/%(id)s.js' % match.groupdict(),
|
||||||
'examples/%(id)s.json' % match.groupdict()]
|
'examples/%(id)s.json' % match.groupdict()]
|
||||||
return Target(name, action=action, dependencies=dependencies)
|
return Target(name, action=action, dependencies=dependencies)
|
||||||
@@ -309,7 +333,7 @@ def _strip_comments(lines):
|
|||||||
|
|
||||||
|
|
||||||
@target('build/check-requires-timestamp', SRC, INTERNAL_SRC, EXTERNAL_SRC,
|
@target('build/check-requires-timestamp', SRC, INTERNAL_SRC, EXTERNAL_SRC,
|
||||||
EXAMPLES_SRC, SPEC)
|
EXAMPLES_SRC, SHADER_SRC, SPEC)
|
||||||
def build_check_requires_timestamp(t):
|
def build_check_requires_timestamp(t):
|
||||||
unused_count = 0
|
unused_count = 0
|
||||||
all_provides = set()
|
all_provides = set()
|
||||||
@@ -408,7 +432,7 @@ def gh_pages(t):
|
|||||||
virtual('doc', 'build/jsdoc-%(BRANCH)s-timestamp' % vars(variables))
|
virtual('doc', 'build/jsdoc-%(BRANCH)s-timestamp' % vars(variables))
|
||||||
|
|
||||||
|
|
||||||
@target('build/jsdoc-%(BRANCH)s-timestamp' % vars(variables), SRC,
|
@target('build/jsdoc-%(BRANCH)s-timestamp' % vars(variables), SRC, SHADER_SRC,
|
||||||
ifind('doc/template'))
|
ifind('doc/template'))
|
||||||
def jsdoc_BRANCH_timestamp(t):
|
def jsdoc_BRANCH_timestamp(t):
|
||||||
t.run('%(JSDOC)s', '-t', 'doc/template', '-r',
|
t.run('%(JSDOC)s', '-t', 'doc/template', '-r',
|
||||||
|
|||||||
106
src/ol/renderer/webgl/shader.mustache
Normal file
106
src/ol/renderer/webgl/shader.mustache
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
goog.provide('{{namespace}}.shader');
|
||||||
|
|
||||||
|
goog.require('ol.renderer.webgl.FragmentShader');
|
||||||
|
goog.require('ol.renderer.webgl.VertexShader');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @extends {ol.renderer.webgl.FragmentShader}
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.Fragment = function() {
|
||||||
|
goog.base(this, {{namespace}}.shader.Fragment.SOURCE);
|
||||||
|
};
|
||||||
|
goog.inherits({{namespace}}.shader.Fragment, ol.renderer.webgl.FragmentShader);
|
||||||
|
goog.addSingletonGetter({{namespace}}.shader.Fragment);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.Fragment.DEBUG_SOURCE = 'precision mediump float;\n{{getOriginalFragmentSource}}';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.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;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @extends {ol.renderer.webgl.VertexShader}
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.Vertex = function() {
|
||||||
|
goog.base(this, {{namespace}}.shader.Vertex.SOURCE);
|
||||||
|
};
|
||||||
|
goog.inherits({{namespace}}.shader.Vertex, ol.renderer.webgl.VertexShader);
|
||||||
|
goog.addSingletonGetter({{namespace}}.shader.Vertex);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.Vertex.DEBUG_SOURCE = '{{getOriginalVertexSource}}';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.Vertex.OPTIMIZED_SOURCE = '{{getVertexSource}}';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.Vertex.SOURCE = goog.DEBUG ?
|
||||||
|
{{namespace}}.shader.Vertex.DEBUG_SOURCE :
|
||||||
|
{{namespace}}.shader.Vertex.OPTIMIZED_SOURCE;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.uniform = function() {};
|
||||||
|
{{#getUniforms}}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.uniform.{{originalName}} =
|
||||||
|
goog.DEBUG ? '{{originalName}}' : '{{shortName}}';
|
||||||
|
{{/getUniforms}}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.attribute = function() {};
|
||||||
|
{{#getAttributes}}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
{{namespace}}.shader.attribute.{{originalName}} =
|
||||||
|
goog.DEBUG ? '{{originalName}}' : '{{shortName}}';
|
||||||
|
{{/getAttributes}}
|
||||||
Reference in New Issue
Block a user