You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Process rectangular shaders without webgl and obtain the result. Can be used for shaders unit testing, audio processing etc. A nogl analog of gl-shader-output for node.
varShaderOutput=require('nogl-shader-output')//get a draw function for our testvardraw=ShaderOutput(` precision mediump float; uniform float green; void main() { gl_FragColor = vec4(0.0, green, 0.0, 1.0); }`,{width: 1,height: 1});//returns the frag color as [R, G, B, A]varcolor=draw()//we could also set uniforms before renderingvarcolor2=draw({green: 0.5})//due to precision loss, you may want to use a fuzzy equality checkvarepsilon=1e-5;varalmostEqual=require('array-almost-equal')almostEqual(color2,[0.0,0.5,0.0,1.0],epsilon)
API
draw = ShaderOutput(shader, options?)
Takes a gl-shader instance or fragment shader source and an options, returns a draw function. Possible options:
width the width of a drawing buffer, by default - 1
height the height of a drawing buffer, by default - 1
The draw function has the following signature:
varfragColor=draw(uniforms?)
Where uniforms is an optional map of uniform names to values (such as [x, y] array for vec2), applied before rendering.
The return value is the gl_FragColor RGBA of the canvas, in floats, such as [0.5, 1.0, 0.25, 1.0].
Hint: you can define varyings by passing gl-shader instance with custom vertex shader. To create gl-shader in node, you can use nogl: