get color from spherical harmonic coefficients and normals
npm install glsl-sh
Get color from spherical harmonic coefficients and normals.
$ npm i -S glsl-sh
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:
``glsl`
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.
$3
- c: spherical harmonics coefficients
- normal: the world normalreturns
vec3`, the calculated color