# glsl-inject-defines

> injects a #define statement into a shader source

Latest version **1.0.3** (published 2015-06-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install glsl-inject-defines
pnpm add glsl-inject-defines
yarn add glsl-inject-defines
bun add glsl-inject-defines
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.3 |
| Published | 2015-06-28 |
| First published | 2015-06-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 9 |
| Author | Matt DesLauriers |
| Maintainers | mattdesl |
| Keywords | ecosystem:stackgl, inject, define, shader, stackgl, webgl, shader, glsl |

## Links

- npm: https://www.npmjs.com/package/glsl-inject-defines
- Repository: https://github.com/mattdesl/glsl-inject-defines
- Issues: https://github.com/mattdesl/glsl-inject-defines/issues
- npm.io page: https://npm.io/package/glsl-inject-defines

## Dependencies (3)

- [glsl-tokenizer](https://npm.io/package/glsl-tokenizer.md) ^2.0.2
- [glsl-token-string](https://npm.io/package/glsl-token-string.md) ^1.0.1
- [glsl-token-inject-block](https://npm.io/package/glsl-token-inject-block.md) ^1.0.0

## Recent versions

- 1.0.3 (latest) — 2015-06-28
- 1.0.2 — 2015-06-25
- 1.0.1 — 2015-06-24
- 1.0.0 — 2015-06-24

## README

# glsl-inject-defines

[![stable](http://badges.github.io/stability-badges/dist/stable.svg)](http://github.com/badges/stability-badges)

Safely inject `#define` statements into a shader source. 

If the shader contains any `#version` or `#extension` statements, the defines are added after them. 

## Example

```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](https://www.npmjs.com/package/glslify).

## Install

```sh
npm install glsl-inject-defines
```

## Usage

[![NPM](https://nodei.co/npm/glsl-inject-defines.png)](https://www.npmjs.com/package/glsl-inject-defines)

#### `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](http://github.com/stackgl/glsl-inject-defines/blob/master/LICENSE.md) for details.

---
_Source: https://npm.io/package/glsl-inject-defines · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
