32 lines
1 KiB
GLSL
Executable file
32 lines
1 KiB
GLSL
Executable file
uniform float shirr[27];
|
|
|
|
vec3 shIrradiance(const vec3 nor, const float scale) {
|
|
const float c1 = 0.429043;
|
|
const float c2 = 0.511664;
|
|
const float c3 = 0.743125;
|
|
const float c4 = 0.886227;
|
|
const float c5 = 0.247708;
|
|
vec3 cl00, cl1m1, cl10, cl11, cl2m2, cl2m1, cl20, cl21, cl22;
|
|
cl00 = vec3(shirr[0], shirr[1], shirr[2]);
|
|
cl1m1 = vec3(shirr[3], shirr[4], shirr[5]);
|
|
cl10 = vec3(shirr[6], shirr[7], shirr[8]);
|
|
cl11 = vec3(shirr[9], shirr[10], shirr[11]);
|
|
cl2m2 = vec3(shirr[12], shirr[13], shirr[14]);
|
|
cl2m1 = vec3(shirr[15], shirr[16], shirr[17]);
|
|
cl20 = vec3(shirr[18], shirr[19], shirr[20]);
|
|
cl21 = vec3(shirr[21], shirr[22], shirr[23]);
|
|
cl22 = vec3(shirr[24], shirr[25], shirr[26]);
|
|
return (
|
|
c1 * cl22 * (nor.y * nor.y - (-nor.z) * (-nor.z)) +
|
|
c3 * cl20 * nor.x * nor.x +
|
|
c4 * cl00 -
|
|
c5 * cl20 +
|
|
2.0 * c1 * cl2m2 * nor.y * (-nor.z) +
|
|
2.0 * c1 * cl21 * nor.y * nor.x +
|
|
2.0 * c1 * cl2m1 * (-nor.z) * nor.x +
|
|
2.0 * c2 * cl11 * nor.y +
|
|
2.0 * c2 * cl1m1 * (-nor.z) +
|
|
2.0 * c2 * cl10 * nor.x
|
|
) * scale;
|
|
}
|