【发布时间】:2013-02-15 02:46:07
【问题描述】:
又来了。我准备在我的 dx11 引擎中添加延迟着色,但我有一个架构问题。我正在考虑首先使用 MRT 渲染 gbuffer,将其传递给计算着色器,调度,然后输出结果。我的问题是,我应该创建两个交换链,一个用于渲染 gbuffer,一个 uav 用于将计算着色器渲染到后台缓冲区并呈现,还是有另一种方法可以做到这一点?我在这里要避免的是必须使用全屏四边形并在其上渲染 cs 的输出。开销太大。提前致谢。
【问题讨论】:
-
使用标志 DXGI_USAGE_UNORDERED_ACCESS 创建交换链允许您将其用作计算着色器的输入。我刚试过,你确实可以有 DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_UNORDERED_ACCESS 在同一个交换链中,所以我将尝试使用该交换链运行计算着色器。如果它有效,那么我不需要两个交换链
标签: directx directx-11 compute-shader deferred-shading