2

使用多个渲染目标有什么意义吗?在清除目标并再次使用它之前,不能只绘制一个渲染目标并将其存储在纹理中吗?

4

2 回答 2

4

了解 MRT 的关键是您不会将完全相同的数据绘制到所有渲染目标。

像素着色器只能输出 4 个浮点值,通常您将使用这 4 个值在该给定点生成颜色。但是,您可能希望输出深度数据或普通数据,因此您可以使用这 4 个浮点值来表示您可能需要的其他信息。

使用 MRT 的优点是您只需要绘制一次场景并输出到各种渲染目标,因此在一次渲染过程中,您可以输出到一个渲染目标,该目标将接收漫反射颜色数据,另一个渲染目标将接收普通数据,第三个渲染目标将接收深度数据。请参阅下文以更好地理解我的意思:

在此处输入图像描述

这实际上是 RGBA 值变成其他东西的情况,例如 RGB,因为正在绘制的多边形的法线的 X、Y、Z。

使用 MRT 有一些问题,例如您的所有渲染目标都必须具有相同的位深度,并且您确实开始使用它来提高 GPU 纹理填充率,但总体而言,优势胜过陷阱。

于 2011-06-01T01:02:43.457 回答
1

当您想要渲染一个几何图形并将不同的输出收集到单独的渲染目标中时,可以使用多个渲染目标。

今天,这项技术主要用于实现延迟着色。在延迟着色中,多个渲染目标存储照明信息,例如表面法线、镜面反射颜色和镜面反射指数,以及深度和漫反射颜色信息。这组组合的渲染目标称为 G-Buffer。

请参阅6800 Leagues Under the Sea (Hargreaves & Harris 2004),了解延迟着色和 G-Buffers 的入门知识。

于 2011-05-31T05:28:17.440 回答