Unleash awesomeness. Private packages, team management tools, and powerful integrations. Get started with npm Orgs »

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.

install

npm i glsl-inject-defines

Downloadsweekly downloads

28,436

version

1.0.3

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability