JSPM

glsl-inject-defines

1.0.3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 330916
  • Score
    100M100P100Q186688F
  • License MIT

injects a #define statement into a shader source

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

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.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

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.