Simplify authoring GLSL shaders and reduce boilerplate with a few helpful adjustments.
For example, here's a kindred-style shader:
attribute vec3 position;attribute vec3 normal;varying vec3 vNormal;voidvoid
Both the vertex and fragment shaders are written together — removing the need to keep a duplicate list of uniforms/varyings/attributes in each file. You can pass this shader into
kindred-shader-formatter to get two separate fragment and vertex shaders to pass into your WebGL library of choice.
var format =var glslify =var formatted =consoleconsole
This leaves you with two shaders like the following:
precision highp float;attribute vec3 position;attribute vec3 normal;varying vec3 vNormal;voidvoid
precision highp float;varying vec3 vNormal;voidvoid
Under the hood, we're making a few changes to your shaders:
- Vertex and fragment shaders are written as a single shader, using
void frag()respectively in place of
- Attribute declarations are removed from fragment shaders.
precision highp float;is automatically added to your shaders if not otherwise specified.
- Unused functions are automatically removed using glsl-token-function-shaker.
Formats a combined shader source, returning an object with the vertex and fragment shaders as strings in
const format =const Shader =const src =const shader =
Extracts and returns only the vertex shader from
Extracts and returns only the fragment shader from
MIT. See LICENSE.md for details.