Closed xiaoiver closed 4 years ago
在回调函数中可以传入当前迭代参数,但不应该传当前的结果数据,例如:
onIterationCompleted: (iteration: number, result: number[]) => {
world.setBinding(compute, 'u_K', Math.random());
},
原因是 readData
开销很大,通常用户也不会想要在每次迭代结束后都做这件事,在全部迭代完成后再一次性获取结果相对合理。
另外还有一个限制是不支持在每次迭代后都修改数组类型例如 float[]
vec4[]
等。
原因是在 WebGL 的实现中我们使用纹理存储,不希望在每次迭代后都重新生成纹理。
问题背景
在需要多次迭代的场景中,目前只提供了
onCompleted
回调。但是可能任务需要在每次迭代中进行参数的更新,在 CPU 侧完成计算后希望传给 GPU,例如:类似 3D 引擎中相机矩阵的更新方式,或者传入当前时间变量进行某种运动轨迹的计算。