认识多渲染目标(Multiple Render Targets)技术 【转】

首先,渲染到纹理是D3D中的一项高级技术。一方面,它很简单,另一方面它很强大并能产生很多特殊效果。 比如说发光效果,环境映射,阴影映射,景深效果,都可以通过它来实现。渲染到纹理只是渲染到表面的一个延伸。我们只需对得到的纹理图像进行后处理即可。首先,我们要创造一个纹理,并且做好一些防范措施。第二步我们就可以把适当的场景渲染到我们创建的纹理上了。然后,我们把这个纹理用在最后的渲染上。

GeForce 6系列图形芯片支持的PixelShader 3.0中还支持一种较新的技术,我们要额外放在这一页来简要介绍。这就是多渲染目标(MRT)技术。

  这种技术的作用就是将每像素的数据保存到不同的缓冲区当中。这样的好处就是这些缓冲区数据由此可以成为照片级光照效果着色器的参数。

  在这种方法的帮助下,光照可以在所有几何图形被渲染以后最后进行应用,不再需要进行多步的渲染。因而这种技术也可以被称为延期着色(Deferred Shading)。存储在这种类型的表面中的数据可以包括位置、法线、颜色以及材质的信息。

  我们来看一个MRT技术用于产生一个高动态范围的场景的实例。

第一个渲染步骤

  在第一个渲染步骤,开发者创造出3个输出缓冲区,这包括:1个颜色的贴图、1个法线的贴图和1个深度的贴图。

第二个渲染步骤

  在第二个步骤,使用法线和深度贴图结合光照条件计算出光照。然后,场景在带有颜色贴图的情况下被精确地照明。

第三个渲染步骤

  最后在第三个步骤中,超过0~1范围的超高亮度的光线值被带入场景中,计算包含高亮度像素附近的像素的发光。这个步骤产生出难以置信的发光效果。

原文地址:https://www.cnblogs.com/mazhenyu/p/6488807.html