[英]How to unwrap this recursive function into a loop?
我在DirectCompute中為教育編寫了一個簡單的漫射路徑跟蹤器。 DirectCompute不允許使用遞歸函數,因此我需要弄清楚如何將此遞歸語句轉換為循環:
intersectCode() {
// ... intersection code
if(hit an object)
return objectHit.diffuse * (intersectCode() + objectHit.emittance);
}
通用偽代碼或C示例將不勝感激
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不必在堆棧中?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.