diff options
author | Konstantin Käfer <github@kkaefer.com> | 2014-01-07 16:52:23 +0100 |
---|---|---|
committer | Konstantin Käfer <github@kkaefer.com> | 2014-01-07 16:52:23 +0100 |
commit | 528eaf475e084508cb2d2d26df7d4136f1eb5e04 (patch) | |
tree | 87f9a7ecec23cb7cc37450e7cd5f34fa6248f750 /bin | |
parent | 044a7b5dcd92b1ba095f0768d24aa504fdf71a16 (diff) | |
download | qtlocation-mapboxgl-528eaf475e084508cb2d2d26df7d4136f1eb5e04.tar.gz |
emscripten support
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/build-shaders.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/bin/build-shaders.js b/bin/build-shaders.js new file mode 100755 index 0000000000..d8d7a46bbb --- /dev/null +++ b/bin/build-shaders.js @@ -0,0 +1,77 @@ +#!/usr/bin/env node +'use strict'; + +var fs = require('fs'); +var path = require('path'); + +module.exports = function() { + var name; + var shaders = {}; + + var shaderFiles = fs.readdirSync('src/shader'); + + for (var i = 0; i < shaderFiles.length; i++) { + var parts = shaderFiles[i].match(/^(.+)\.(vertex|fragment)\.glsl$/); + if (parts) { + name = parts[1]; + var type = parts[2]; + if (!(name in shaders)) { + shaders[name] = {}; + } + shaders[name][type] = fs.readFileSync(path.join('src/shader', shaderFiles[i]), 'utf8'); + } + } + + var lines = []; + var consts = []; + for (var name in shaders) { + consts.push(name.toUpperCase() + '_SHADER'); + + var line = ''; + line += ' [' + name.toUpperCase() + '_SHADER] = {\n'; + line += ' .vertex = ' + JSON.stringify(shaders[name].vertex) + ',\n'; + line += ' .fragment = ' + JSON.stringify(shaders[name].fragment) + ',\n'; + line += ' }'; + lines.push(line); + } + + var header = '// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.\n\n'; + header += '#ifndef LLMR_SHADER_SHADERS\n'; + header += '#define LLMR_SHADER_SHADERS\n'; + header += '\n'; + header += '#ifdef __cplusplus\n'; + header += 'extern "C" {\n'; + header += '#endif\n'; + header += '\n'; + header += 'struct llmr_shader {\n'; + header += ' const char *vertex;\n'; + header += ' const char *fragment;\n'; + header += '};\n'; + header += 'typedef struct llmr_shader llmr_shader_t;\n' + header += '\n'; + header += 'enum {\n'; + consts.push('SHADER_COUNT'); + header += ' ' + consts.join(',\n ') + '\n'; + header += '};\n'; + header += '\n'; + header += 'extern const llmr_shader_t llmr_shaders[SHADER_COUNT];\n'; + header += '\n'; + header += '#ifdef __cplusplus\n'; + header += '}\n'; + header += '#endif\n'; + header += '\n'; + header += '#endif\n'; + fs.writeFileSync('include/llmr/shader/shaders.h', header); + + + var code = '// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.\n'; + code += '#include <llmr/shader/shaders.h>\n'; + code += '\n'; + code += 'const llmr_shader_t llmr_shaders[SHADER_COUNT] = {\n'; + code += lines.join(',\n'); + code += '\n};\n'; + + fs.writeFileSync('src/shader/shaders.c', code); +}; + +module.exports(); |