我正在尝试回读光线从GPU到DXR中的CPU的光线递归路径的光线追踪交点。
我能够将相交渲染成分层的无序访问视图Texture2D数组,因此射线树的每一层都对应于该UAV数组中的一层。
当我尝试从GPU“回读”此数据以便CPU可以读取它时,问题就来了。我还没有找到一种将纹理信息从GPU复制到CPU的方法-我无法在回读堆上实例化2D纹理缓冲区。我现在正在研究将此交集信息写入平坦的1D UAV缓冲区-本质上是g缓冲区。但是,我很难初始化它(由于每个像素可能必定包含一个交集,因此我需要一个缓冲区,其大小为屏幕尺寸* RAY_RECURSION_DEpth(在我的情况下为6),但是UAV缓冲区中的元素数量有限到345599)。
说到重点,我有办法从UAV Texture2D资源中回读吗?我有办法创建一个大于345599的UAV缓冲区吗?还是我应该完全采用另一种方式?
谢谢。