injects a #define statement into a shader source
npm install 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.
``glsl
// 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:
`js
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:
`glsl
// 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.
`sh`
npm install glsl-inject-defines

#### newSource = injectDefines(source, defines)
Injects the set of defines, an object with
Returns the transformed source, with defines injected after extension and version statements.
MIT. See LICENSE.md for details.