Metal シェーディング言語は再帰をサポートしていますか? 私はコードを持っています:
Intersection traceScene(Ray ray, int step) {
Intersection retIntersection = Intersection();
Intersection i1 = trianglePrism.intersect(ray);
Intersection i2 = image.intersect(ray);
if (i1.intersect) {
Ray newRay = Ray(i1.position, Refract(ray.direction, trianglePrism.normal, 0.71));
return traceScene(newRay, step + 1);
} else {
if (i2.intersect) {
return i2;
} else {
return Intersection();
}
}
return retIntersection;
}
しかし、それを使用するカーネル関数をビルドすると、エラーが発生します。何か案は?