渲染流程笔记
来源:互联网 发布:吉他包淘宝 编辑:程序博客网 时间:2024/05/20 05:54
场景渲染绘制过程中,怎么能够保证效果的同时最小化gpu的工作量,是提高帧率的关键,最基本的做法是裁剪技术,如空间分割,相机距离排序等,偏gpu的如材质排序等,但这些技术间是有冲突的,比如相机距离排序可能就与材质排序,透明与不透明物体渲染冲突,以前的工作中还没有涉及到对整个渲染架构的调整及优化,故这部分虽一直有思考,但并没有完整的去分析如何解决,最近看Game Engine Architecture时看到一个渲染流程,可以较好解决大部分问题,特此记录一下。
先总结下自己想到的一般渲染逻辑中存在的问题:
1、要尽量减少gpu处理的网格,不可见物体的网格是完全没必要提交的gpu的,这部通过裁剪技术偏cpu的裁剪和偏gpu的遮挡查询
2、gpu要尽量减少状态改变,状态改变操作gpu必须等前一状态的工作结束后才能进行,所以频繁的状态切换导致gpu频繁等待,这个问题一般是通过材质排序解决,因为相同材质的物体,渲染状态都是一样的。
3、减少cpu与gpu间的数据交换,主要是贴图,这也是大显存的优势,如果显存不够用的话,就进行数据交换,贴图排序可以减少数据量。
4、像素覆盖,远处物体的像素点会被近处物体遮挡,所以这部分像素点的渲染完全是浪费(特别是有复杂光照计算时,更是浪费gpu计算,也是延迟渲染或光照的优势),通过物体距离相机距离排序可以解决,先绘制离相机近的,再绘制离相机远的,当然这个并不能全部解决,因为物体可能交叠,也可能自覆盖。
5、半透明物体渲染,半透明物体会透过它后面的物体,所以必须由远到近的绘制,这与上一点是冲突的,一般的解决办法是把半透明的物体筛选出来放到最后渲染,同时不透明物体渲染还可以关掉alphablend以提高效率。
那么怎么样的渲染逻辑才能如何能尽可能解决上面问题,Game Engine Architecture给出了一个方法,使用到了gpu z prepass特性,具体做法是:
1、不明物体渲染两遍,第一遍用由近到远的顺序渲染,并关闭pixshader,仅输出z-buffer,这样渲染速度会很快。第二遍按材质排序渲染,由于已经有了z-buffer所以像素覆盖的问题可以避免,pixel shader工作量大大减少,同时材质和远近排序的矛盾也得到解决。
2、渲染半透明物体,由于透明物体必须由远到近渲染,所以无可避免导致,无法材质排序。
先总结下自己想到的一般渲染逻辑中存在的问题:
1、要尽量减少gpu处理的网格,不可见物体的网格是完全没必要提交的gpu的,这部通过裁剪技术偏cpu的裁剪和偏gpu的遮挡查询
2、gpu要尽量减少状态改变,状态改变操作gpu必须等前一状态的工作结束后才能进行,所以频繁的状态切换导致gpu频繁等待,这个问题一般是通过材质排序解决,因为相同材质的物体,渲染状态都是一样的。
3、减少cpu与gpu间的数据交换,主要是贴图,这也是大显存的优势,如果显存不够用的话,就进行数据交换,贴图排序可以减少数据量。
4、像素覆盖,远处物体的像素点会被近处物体遮挡,所以这部分像素点的渲染完全是浪费(特别是有复杂光照计算时,更是浪费gpu计算,也是延迟渲染或光照的优势),通过物体距离相机距离排序可以解决,先绘制离相机近的,再绘制离相机远的,当然这个并不能全部解决,因为物体可能交叠,也可能自覆盖。
5、半透明物体渲染,半透明物体会透过它后面的物体,所以必须由远到近的绘制,这与上一点是冲突的,一般的解决办法是把半透明的物体筛选出来放到最后渲染,同时不透明物体渲染还可以关掉alphablend以提高效率。
那么怎么样的渲染逻辑才能如何能尽可能解决上面问题,Game Engine Architecture给出了一个方法,使用到了gpu z prepass特性,具体做法是:
1、不明物体渲染两遍,第一遍用由近到远的顺序渲染,并关闭pixshader,仅输出z-buffer,这样渲染速度会很快。第二遍按材质排序渲染,由于已经有了z-buffer所以像素覆盖的问题可以避免,pixel shader工作量大大减少,同时材质和远近排序的矛盾也得到解决。
2、渲染半透明物体,由于透明物体必须由远到近渲染,所以无可避免导致,无法材质排序。
0 0
- 渲染流程笔记
- crysis2 dx9一帧渲染流程笔记
- crysis2 - dx9一帧渲染流程笔记
- COCOS学习笔记--Cocos引擎渲染流程
- 笔记01——GPU渲染流程
- 《浏览器渲染原理及流程》学习笔记
- 渲染流程
- 渲染流程
- 渲染流程
- 渲染流程
- 渲染流程
- Ogre学习笔记(3):Mesh的渲染流程
- Reiiden制作笔记G(D3D的渲染流程)
- U3D学习笔记(一)----pipeline渲染流程
- Ogre2.1 分析笔记(四) 渲染流程(一)
- Ogre2.1 分析笔记(五) 渲染流程(二)
- 07-渲染流程-1-流程
- 【图形学】渲染管道 渲染管线 渲染流程 渲染流水线
- IOS面试相关
- IOS 30多个iOS常用动画,带详细注释
- Android实战技能:深入解析AsyncTask
- oracle 异常处理
- STL中vector的删除操作引起迭代器失效和空间重新配置
- 渲染流程笔记
- [iOS]用NSURLConnect做HTTP请求浅析
- 大型网站架构不得不考虑的10个问题
- 抢先PS4,国行版Xbox One九月入驻家乐福
- Unity学习笔记——MonoBehaviour类Invoke, Coroutine
- 你好世界
- Android Android.mk && Application总结
- PRINCE2®世界杯活动
- jpeglib的使用