我正在为教育用DirectCompute编写一个简单的漫射路径跟踪器。DirectCompute不允许使用递归函数,因此我需要弄清楚如何将此递归语句转换为循环:
intersectCode() {
// ... intersection code
if(hit an object)
return objectHit.diffuse * (intersectCode() + objectHit.emittance);
}泛型伪代码或C语言示例将非常受欢迎
发布于 2012-06-01 05:17:37
object = initialObject;
objectStack = new ObjectStack();
do {
objectStack.push(object);
// get new intersected object as object
} while (object);
result = 0;
while (object = objectStack.pop()) {
result = object.diffuse * (result + object.emittance);
}
return result;你可能想要调整它,因为所有的细节都是未知的-例如,也许initObject不一定要在堆栈中?
https://stackoverflow.com/questions/10841275
复制相似问题