1

optix のスタックに格納されているものを理解しようとしています。

私が理解しているように、コンテキストごとにスタック サイズを設定し、光線生成プログラムの各スレッドに 1 つのスタックが割り当てられます。レイが起動されると、スレッドはレイのペイロードを格納するスタックを運びます。

たとえば、再帰的なレイトレーサーを実行すると、メモリに保持するにはペイロードが多すぎるため、スタック オーバーフローが発生するのではないかと考えました。しかし、現在、float + 3 uint のペイロードを持つ放射光線と、float のみのシャドウ レイを含むプログラムがあり、バウンスは 1 回しかありません。ただし、スタック オーバーフローを回避するには、スタックを 1024 よりも大きくする必要があります。確かに、これは私の 2 つのペイロードだけではありません。

それで、スタックには他に何がありますか?(私の特定のケースではなく、一般的な意味です。レイ ペイロード以外にスタックに保存されるものは何ですか? (もしそうなら)? たとえば、ヒットに関する情報も保存しますか? シーン ツリーについて? どのプログラムが現在の光線を呼び出したかを追跡しますか?)

ご協力いただきありがとうございます!

4

1 に答える 1