irradiance method

(double, double, double) irradiance(
  1. double nx,
  2. double ny,
  3. double nz
)

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);
}