DirectX 11延迟渲染

DirectX 11 Deferred Rendering

本文关键字:延迟 DirectX      更新时间:2023-10-16

大约一个月以来,我一直在尝试使用DirectX 11制作延迟渲染器,但没有成功。

我遇到的大多数白皮书都描述了总体实现,但没有描述实际实现(这很有意义,但对我来说,实际实现很糟糕)。

我已经看了几个完整的引擎实现,例如"实用渲染和计算Direct3D11"的源代码,https://hieroglyph3.codeplex.com/,但发现它们过于复杂和/或极其复杂(涉及计算着色器)。

当我看了一遍http://rastertek.com/教程,它们已经有一段时间没有更新了(据我所知,作者正在永久中断),并使用DirectX 9/10中的主题。

在过去的几周里,我一直在努力寻找一套相对基本的实现教程,希望能有所帮助——相对基本的我指的是扩散&几何体过程的法线,以及照明过程的点光源。

因此,为了提出一个问题,据了解,是否有一套教程和/或示例项目完成了我上面描述的基本实现?

我对XNA或OpenGL不太感兴趣,因为前者是c#,后者不是DirectX或RasterTek教程,因为正如我所说,它们已经过时了。

非常感谢,我很感激。

我强烈建议您购买这本书:《实用渲染与计算Direct3D11》。有一整章专门介绍延迟渲染,详细解释了它是如何工作的,缺点和缺点;专业人士,以及如何使用延迟渲染来解决典型问题。

这里有一些资源,希望其中一些对您有用。

  • AMD Radeon SDK示例:http://developer.amd.com/tools-and-sdks/graphics-development/amd-radeon-sdk/#downloadsamples-Tiled Lighting示例被推迟。可能有点复杂。

  • NVIDIA Gameworks示例:https://developer.nvidia.com/gameworks-directx-samples

  • 我所知道的最好的资源来自OpenGL:http://ogldev.atspace.co.uk/www/tutorial35/tutorial35.html-我知道你想要DirectX 11,但如果你想更好地理解原理,这可能值得一看。

除此之外,我建议您开始实施。您提到您已经知道如何渲染到纹理。从您已经拥有的代码开始,即使没有直接的代码示例,也不应该过度扩展到延迟渲染。一开始你不应该担心照明——只需将纹理颜色渲染到g缓冲区,并为延迟着色过程设置全屏四边形,然后将颜色输出到屏幕。一旦你有了这些,你就可以很好地使用完全延迟的渲染器了。