gl-magic-uniforms
v2.1.0
Published
Create a magic getter/setter object for a given WebGLProgram's uniforms
Downloads
7
Readme
gl-magic-uniforms
Create a magic getter/setter object for a given WebGLProgram's uniforms. This provides a standalone gl-shader-style interface for setting shader programs' uniforms that you can use in your own projects.
Usage
uniforms = Magic(gl, program[, uniforms[, opts]])
gl
is theWebGLRenderingContext
thatprogram
is attached to.program
is aWebGLProgram
instance to modify the uniforms of.
Optionally, you can pass in a custom set of uniforms
objects. This should be in the same format as the results of gl-shader-extract. If not supplied, uniforms are automatically inferred at runtime by inspecting program
.
var uniforms = require('gl-magic-uniforms')
var canvas = document.createElement('canvas')
var gl = canvas.getContext('webgl')
var program = gl.createProgram()
var start = Date.now()
// ...setup the program object...
var uniforms = MagicUniforms(gl, program)
gl.useProgram(program)
uniforms.time = (Date.now() - start) / 1000
uniforms.light = [1, 0, 1, 1]
Uniforms can now be got and set by name, in the same style as documented in gl-shader.
Note: program
must be in use when setting uniforms
, or unexpected behavior may occur. This is not done by default to avoid an excess of calls to gl.useProgram
.
Additionally, you can pass in the following options:
opts.cacheScalars
: iftrue
, scalar uniforms (e.g.float
,bool
,int
) will be cached where possible, reducing the amount of work for the GPU. Defaults totrue
.opts.cacheVectors
: iftrue
, vector uniforms will be cached where possible, provided they're 4 or less elements long. Defaults tofalse
, as there are cases where this produces more overhead when enabled depending on how often these values change.
License
MIT. See LICENSE.md for details.