viewof shademap = {
const Nc = 256;
const { context, dispatch } = viewofCanvas(Nc, Nc);
const { data, hunit, vunit } = heightmap;
const sun = 15 * (τ / 360);
const S = computeShading(
data,
[hunit, vunit],
[0, -Math.cos(sun), Math.sin(sun)],
0.7,
256
);
dispatch({
heightmap: { data, hunit, ratio: vunit / hunit },
colormap: { data: S }
});
return canvas(context, (i, j) => Array(3).fill(S[i * 2][j * 2]));
}