Package Exports
- glsl-inject-defines
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (glsl-inject-defines) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
glsl-inject-defines
Safely inject #define
statements into a shader source.
If the shader contains any #version
or #extension
statements, the defines are added after them.
Example
// Your cool shader
#version 330
#extension GL_OES_standard_derivatives : enable
void main() {
#ifdef BLUE
gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);
#else
gl_FragColor = vec4(0.0);
#endif
}
You can process it at runtime, like so:
var injectDefines = require('glsl-inject-defines')
var fs = require('fs')
var source = fs.readFileSync(__dirname + '/shader.glsl', 'utf8')
var transformed = injectDefines(source, {
PI: 3.14,
BLUE: ''
})
console.log(transformed)
The resulting shader:
// Your cool shader
#version 330
#extension GL_OES_standard_derivatives : enable
#define PI 3.14
#define BLUE
void main() {
#ifdef BLUE
gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);
#else
gl_FragColor = vec4(0.0);
#endif
}
Works in the browser with browserify and glslify.
Install
npm install glsl-inject-defines
Usage
newSource = injectDefines(source, defines)
Injects the set of defines
, an object with <name, value>
pairs that will get turned into strings for the shader source.
Returns the transformed source, with defines injected after extension and version statements.
License
MIT. See LICENSE.md for details.