D3D12使用后备缓冲表面作为无序访问视图(UAV)

问题描述 投票:1回答:1

我为学校项目制作一个简单的光线跟踪器,计算着色器应该用于遮蔽三角形或其他原始图形。为此,我想直接在计算着色器中写入backbuffer-surface,然后在imideatly中显示结果。我确信这在DX11中是可行的,虽然我似乎无法在DX12中使用它。

我无法收集到关于此的更多信息,但我发现this gamedev thread正在讨论我试图解决的完全相同的问题,他们似乎得出结论,这是我的解决方法:写入中间纹理然后在管道。我无法完全接受在dx12中无法实现这一点。为什么要删除该功能?可能是排队系统消除了一些开销,使得没有必要拥有这个功能吗?

有没有办法实现光线跟踪器而无需写入单独的纹理然后在管道中采样或将其复制到后台缓冲区?实现绩效的最佳选择是什么?

compute-shader directx-12 directcompute
1个回答
0
投票

你必须得到答案。他们删除了创建无人机的能力,就像他们删除了在交换链中使用多重采样表面的能力一样。

在交换链表面上授权无人机的问题是,他们必须放弃跟踪发生的事情。 DX12依赖于无人机在运行时100%易失的描述符堆(渲染目标仅在CPU侧,可以跟踪)。

Microsoft需要强烈跟踪交换链表面状态,以保证桌面演示的行为,因此,他们选择拒绝无人机绑定。

© www.soinside.com 2019 - 2024. All rights reserved.