2012-05-31 6 views
0

저는 교육을 위해 DirectCompute에서 간단한 경로 추적 프로그램을 작성하고 있습니다. 다이렉트 재귀 기능을 허용하지 않는, 그래서 루프에이 재귀 문을 설정하는 방법을 파악해야합니다루프에이 재귀 함수를 사용하지 않으려면 어떻게해야합니까?

일반 의사 코드 또는 C의 예를 정말 감사하겠습니다

intersectCode() { 

    // ... intersection code 

    if(hit an object) 
     return objectHit.diffuse * (intersectCode() + objectHit.emittance); 
} 

+0

'(객체에 히트)'이 거짓이면 무엇을 반환합니까? –

+0

모든 객체를 놓친 경우 float3 (0,0,0) – user1043761

답변

0
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가 스택에있을 필요는 없습니다.

관련 문제