irradiance method
Diffuse light (RGB, for a white Lambert surface) facing n (unit).
Implementation
(double, double, double) irradiance(double nx, double ny, double nz) {
final y = _basis(nx, ny, nz);
var r = 0.0, g = 0.0, b = 0.0;
for (var i = 0; i < 9; i++) {
r += sh[i * 3] * y[i];
g += sh[i * 3 + 1] * y[i];
b += sh[i * 3 + 2] * y[i];
}
return (r, g, b);
}