glsl-inject-defines

1.0.3 • Public • Published

glsl-inject-defines

stable

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.00.01.01.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.00.01.01.0);
  #else
    gl_FragColor = vec4(0.0);
  #endif
}

Works in the browser with browserify and glslify.

Install

npm install glsl-inject-defines

Usage

NPM

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.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.3
    272,593
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.0.3
    272,593
  • 1.0.2
    0
  • 1.0.1
    9
  • 1.0.0
    9

Package Sidebar

Install

npm i glsl-inject-defines

Weekly Downloads

215,110

Version

1.0.3

License

MIT

Last publish

Collaborators

  • mattdesl