function* dijkstra(points) {
const time = performance.now();
const COSTS = createCostsTexture(points);
const t_costs = performance.now() - time;
let current = [
Float32Array.from({ length: N }, (_, i) =>
startNodes.includes(i) ? 0 : 1e9
),
Int32Array.from({ length: N }).fill(-1),
Int32Array.from({ length: N }, (_, i) => i),
Int32Array.from({ length: N }, (_, i) => (startNodes.includes(i) ? 1 : 0))
],
sum,
sum0 = kernelSum(current)[0];
const kernel0 = kernel(),
kernel1 = kernel();
for (var i = 0; i < 100; i++) {
current = kernel1(kernel0(current, COSTS), COSTS);
sum = kernelSum(current)[0];
console.warn(i, performance.now() - time, sum);
if (sum >= sum0 - 0.0001) break;
sum0 = sum;
yield { value: current, t: performance.now() - time, t_costs, sum, i };
}
yield { value: current, t: performance.now() - time, t_costs, sum, i };
}