我试图了解 optix 堆栈中存储的内容。
据我了解,我们设置每个上下文的堆栈大小,并且一个堆栈附加到光线生成程序中的每个线程。当光线启动时,线程会携带堆栈,该堆栈存储光线的有效负载。
我认为,例如,当我们执行递归光线追踪器时,会发生堆栈溢出,因为内存中会保留太多有效负载。但是现在,我有一个程序,它的辐射射线的有效载荷为 float + 3 uint,阴影射线只有一个浮点数,并且只有一次反弹。但是,我的堆栈需要大于 1024 以避免堆栈溢出。当然,这不仅仅是我的两个有效载荷。
所以我想知道,堆栈中还有什么?(我的意思是一般情况下,不是在我的特定情况下。除了光线有效载荷(如果有的话)之外,堆栈中存储了什么?例如,我们是否还存储有关命中的信息?关于场景树? 我们是否跟踪哪个程序调用了当前射线?)
谢谢你的帮助!