【发布时间】:2012-09-25 16:03:04
【问题描述】:
我正在尝试使用 C++ directx 11 SDK 一次性渲染两个纹理。我想要一个纹理包含结果图像的每个像素的颜色(我通常在渲染 3D 场景时在屏幕上看到的颜色),另一个纹理包含每个像素和深度的法线(3 个浮点表示正常,1 个浮点表示深度)。现在,我能想到的是创建两个渲染目标,并将第一遍渲染为颜色,第二遍将法线和深度分别传递给每个渲染目标。但是,这似乎是在浪费时间,因为我可以在第一遍中获得每个像素的颜色、法线和深度的信息。那么有没有办法用像素着色器以某种方式输出两个纹理?
任何帮助将不胜感激。
附:我正在考虑像素着色器中的 RWTexture2D 或 RWStructuredBuffer 。一点背景知识:我需要这两个图像在计算着色器中进行进一步处理。这带来了同步的一个附带问题:由于像素着色器(与计算着色器不同)一次写入每个像素,我怎么知道像素着色器何时完成并告诉计算着色器开始图像后处理?
【问题讨论】:
标签: directx-11 pixel-shader render-to-texture compute-shader