渲染流程笔记

来源:互联网 发布:吉他包淘宝 编辑:程序博客网 时间: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、渲染半透明物体,由于透明物体必须由远到近渲染,所以无可避免导致,无法材质排序。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗一直挠痒痒怎么办 手被铅笔扎了怎么办 小孩智力轻度低下该怎么办 发侮辱人的信息怎么办 宋民国表情我能怎么办 苹果手机微信弄成听筒模式怎么办 我的小可爱丢了怎么办 法斗犬老是皮肤病看也看不好怎么办 项链水晶不亮了怎么办 美甲画画手抖怎么办 微信中的表情符号不全怎么办 球球大作战找不到团战服务器怎么办 小孩的腰有点弯怎么办 小朋友不听话被老师罚站怎么办 幼儿园小朋友被老师罚站怎么办 生完小孩弯腰驼背怎么办 小孩爱捡垃圾是怎么办 腰扭了不敢弯腰怎么办 小人狗在背后骂我怎么办 微信表情缺失了怎么办 动图过大 微信 怎么办 我能怎么办图片带字 我该怎么办图片带字 学化妆找不到模特练妆怎么办? cf进房间闪退怎么办 手游cf账号封了怎么办 大门牙缺了一块怎么办 缺了一颗牙齿怎么办 CF购买医疗包竞猜币没到账怎么办 CF手游昵称不合法怎么办 微信gif尺寸过大怎么办 微信表情上限300怎么办 太受欢迎了怎么办快穿 兔宝宝沾上人气味怎么办 我该怎么办的文字图片 爱奇艺缓存视频显示下载失败怎么办 把老公惹生气了怎么办 苹果x用电量太快怎么办 小中考地生没过怎么办 如果遇到不负责的语文老师怎么办 孩子的语文老师教的不好怎么办