认识多渲染目标(Multiple Render Targets)技术【转】
http://www.cnblogs.com/hellohuan/archive/2008/12/01/1345359.html
首先,渲染到纹理是D3D中的一项高级技术。一方面,它很简单,另一方面它很强大并能产生很多特殊效果。 比如说发光效果,环境映射,阴影映射,景深效果,都可以通过它来实现。渲染到纹理只是渲染到表面的一个延伸。我们只需对得到的纹理图像进行后处理即可。首先,我们要创造一个纹理,并且做好一些防范措施。第二步我们就可以把适当的场景渲染到我们创建的纹理上了。然后,我们把这个纹理用在最后的渲染上。
GeForce 6系列图形芯片支持的PixelShader 3.0中还支持一种较新的技术,我们要额外放在这一页来简要介绍。这就是多渲染目标(MRT)技术。
这种技术的作用就是将每像素的数据保存到不同的缓冲区当中。这样的好处就是这些缓冲区数据由此可以成为照片级光照效果着色器的参数。
在这种方法的帮助下,光照可以在所有几何图形被渲染以后最后进行应用,不再需要进行多步的渲染。因而这种技术也可以被称为延期着色(Deferred Shading)。存储在这种类型的表面中的数据可以包括位置、法线、颜色以及材质的信息。
我们来看一个MRT技术用于产生一个高动态范围的场景的实例。

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

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

第三个渲染步骤
最后在第三个步骤中,超过0~1范围的超高亮度的光线值被带入场景中,计算包含高亮度像素附近的像素的发光。这个步骤产生出难以置信的发光效果。
认识多渲染目标(Multiple Render Targets)技术【转】的更多相关文章
- 认识多渲染目标(Multiple Render Targets)技术 【转】
认识多渲染目标(Multiple Render Targets)技术 首先,渲染到纹理是D3D中的一项高级技术.一方面,它很简单,另一方面它很强大并能产生很多特殊效果. 比如说发光效果,环境映射,阴影 ...
- 什么是渲染目标(render target)&& 渲染到纹理(Render To Texture, RTT)详解
渲染到纹理(Render To Texture, RTT)详解 RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要.但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿, ...
- GLSL使用FBO实现MRT(Multiple Render Targets)绘制到多张纹理 【转】
项目的程序里设计需要将某一帧渲染出来的画面拆成三通道单色图像存到三张纹理里面.要绘制到纹理里,自然就想到FBO了.但是一次要输出多张纹理,这个还没接触过.一阵网上搜索过后,终于了解到了MRT(多重渲染 ...
- framebufferfetch in mali multiple render targets mrt
gl_LastFragColorARM https://www.khronos.org/registry/OpenGL/extensions/ARM/ARM_shader_framebuffer_fe ...
- Vuejs - 花式渲染目标元素
Vue.js是什么 摘自官方文档: Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库 ...
- Android OpenGL ES 离屏渲染(offscreen render)
通常在Android上使用OpenGL ES,都是希望把渲染后的结果显示在屏幕上,例如图片处理.模型显示等.这种情况下,只需要使用Android API中提供的GLSurfaceView类和Rende ...
- Ogre 渲染目标解析与多文本合并渲染
实现目标 因为需求,想找一个在Ogre中好用的文本显示,经过查找和一些比对.有三种方案 一利用Overlay的2D显示来达到效果. http://www.ogre3d.org/tikiwiki/tik ...
- yii中渲染模板时render与renderPartial的区别
render方法在渲染模板时会将渲染布局文件,而renderPartial则不会渲染布局
- 【react 条件渲染】在render的html中使用 三元运算符 进行条件渲染
return ( {renderedPages.map(page => ( <Button key={page} onClick={() => onPageChange(page)} ...
随机推荐
- [洛谷P4320]道路相遇
题目大意:基本同上一题[bzoj5329][Sdoi2018]战略游戏,只是每个点集内只有两个点,且只有一组询问而已.(双倍经验?我反正就直接改了一下代码就交了) 题解:同上一题(链接见“题目大意”) ...
- poj 2079 Triangle (二维凸包旋转卡壳)
Triangle Time Limit: 3000MS Memory Limit: 30000KB 64bit IO Format: %I64d & %I64u Submit Stat ...
- Qt程序crash信息的捕捉与跟踪(转)
本文转自 https://blog.csdn.net/lanhy999/article/details/12189375
- MFC 获得各类指针、句柄的方法(转)
原文转自 https://blog.csdn.net/abcjennifer/article/details/7480019 1.MFC中获取常见类句柄<视图类,文档类,框架类,应用程序类> ...
- Generator函数的语法
简介 Generator函数是ES6关于异步编程的解决方案.Generator函数能够让函数暂停执行(即交出函数的执行权),简单直白点来理解,Generator函数就是一个状态机,内部封装了多个状态( ...
- libv4l 库【转】
转自:http://www.cnblogs.com/emouse/archive/2013/03/05/2944522.html V4L2摸索了两天还是一头雾水,今天调试一个程序发现两个头文件: #i ...
- Centos 查看内存
1. 查看内存使用 free -mh 2. 读出的内核信息进行解释 cat /proc/meminfo MemTotal: kB #所有可用RAM大小 (即物理内存减去一些预留位和内核的二进制代码大小 ...
- 【linux高级程序设计】(第十五章)UDP网络编程应用 2
UDP广播通信 单播:一对一,TCP和UDP均可完成 广播:只能UDP完成.广播时发送方只发送一个数据包,但是网络上的交换机默认转发广播数据包到所有端口.路由器默认不转发任何广播数据包.故广播在局域网 ...
- Linux操作常识
1.分区 linux如果手动选择分区,必须的两个分区是根分区和swap分区,swap分区是与内存的交换分区,通常设置大小为内存的两倍(如果内存够大也可以不用设置) 2.关机重启 命令:shu ...
- TP5使用技巧
1.fetchSql用于直接返回SQL而不是执行查询,适用于任何的CURD操作方法. 例如:$result = Db::table('think_user')->fetchSql(true)-& ...