glsl-sh
v0.1.0
Published
get color from spherical harmonic coefficients and normals
Downloads
14
Maintainers
Readme
glsl-sh
Get color from spherical harmonic coefficients and normals.
Installation
$ npm i -S glsl-sh
Usage
In order do use this you need spherical harmonics coefficients. You can generate them with the cubemap-sh module which goes hand-in-hand with this module. A shader to calculate the color would look like this:
precision mediump float;
#pragma glslify: sh = require('glsl-sh') // import using glslify
varying vec3 vWorldNormal;
uniform vec3 c[9]; // this is what you get from the cubemap-sh module
uniform vec3 color;
void main() {
vec3 n = normalize(vWorldNormal);
vec3 shColor = sh(c, n) * color; // here we get diffuse light calculated by the sperhical harmonics multiplied by the color of the mesh
gl_FragColor = vec4(shColor, 1.0);
gl_FragColor.rgb = pow(gl_FragColor.rgb, vec3(1.0 / 2.2)); // gamma correction
}
Please note this example uses glslify.
Please see the cubemap-sh repo for a complete example.
API
#pragma glslify: sh = require('glsl-sh')
sh(vec3[9] c, vec3 worldNormal)
- c: spherical harmonics coefficients
- normal: the world normal
returns vec3
, the calculated color
License
MIT