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 =var canvas = documentvar gl = canvasvar program = glvar start = Date// ...setup the program object...var uniforms =gluniformstime = Date - start / 1000uniformslight = 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.