逐像素光照是否会在移动设备上造成性能瓶颈
不光是逐像素光照,任何一种计算,都是有其代价的。
由于像素阶段执行的次数多,所以计算量在像素阶段远比顶点阶段敏感,甚至可以简单地将顶点阶段的计算量忽略掉。那么,像素光照多出的一次点乘和饱和裁剪,当然不能忽略。
但如果,你从占总计算量的比例来看,你的像素阶段可能早就进行了大量其他的操作,那么这仅仅一次点乘早就算不上什么了。而再考虑到像素光照并非全物体在使用,甚至没有使用像素光照的部分,还可能在进行更繁重的计算(比如地表混合),那么归到你这里,很有可能,对帧率的影响只有5%以下,那就是人肉眼看不出的区别了。
说白了,就是看你的像素阶段有没有进行其他的计算。你要是就一个裸光照,没有法线反光,没有烘焙,甚至没有纹理采样,那影响当然是巨大的。但这些东西随便多几个出来,像素光照的影响就会被淡化。
【逐像素光照是否会在移动设备上造成性能瓶颈】 当然,更重要的是像素光照占总渲染面积的比例。
我觉得题主这些应该都是明白的,只是以自己的判断认为,区区像素光照的计算量明明很低,明明比像素光照计算量更大的内容大家都不提,却非要对这个一个顶点还是像素纠结不已?
相信自己,相信试验。
现在都还有人整天对着多边形数量纠结来纠结去的呢。
这是个混沌的世界。
————————————————————————————
说得容易操作一点,如果你法线和反射都用了,那还是干脆用像素光照算了,那两东西在顶点光照下的效果太烂了。不是这种情况的话,用自己眼睛看,觉得顶点光照的效果不能忍,就用像素光。
区区一个像素光和顶点光的差异,相比和像素阶段有关的其他技术,并不算高耗费内容。
现在手游往往fillrate性能会被特效吃死,那些东西又不可能有光照。所以实时光照物体占的比例不高,那么对它的优化也就往往无法从最终帧率体现出来。
所以先处理特效的Overdraw问题。
这和程序常说的28原理差不多,你要先解决性能大头。
不说别的,单单将人物的渲染次序放到地面的渲染次序之前,提升的性能都远高于你现在纠结的东西。
另外就是,一般光照占大头的情况,都是在说多光照。
只是一个直线光= =算了吧。
————————————————————————————
不过我一般普通光照都用的顶点的,仅仅是为了政治正确。政治正确也是要考虑的。
只有真的很丑的时候才会改成像素的。顶点光在棱角多近景兼带旋转的情况下,真的丑……虽然这时候改像素其实消耗比人物大多了(因为近),但是丑,就不能忍了对吧?
实在纠结,用条件编译做成性能选项,让老板自己体验。
■网友
首先回答题目里的一个问题:为什么逐顶点光照和逐像素光照帧率没差别,题主你确定demo的性能瓶颈一定是在GPU上吗,如果限制帧数的罪魁祸首是CPU,那再怎么优化着色器也无济于事
理论上来说,假设屏幕分辨率为1920*1080,总像素数量约为200万,需要满足游戏60 FPS满帧运行的话,如果不考虑Overdraw,每秒需要计算1.2亿个像素,使用G做单位的话就是0.12 G,刚才顺手查了一下高通Adreno系列几款四五年前发布的GPU的理论参数(为了对比,最后放上骁龙835的参数):
Adreno 200, 133 MHz,2.4 GFLOPSAdreno 205, 266 MHz,9.5 GFLOPSAdreno 220, 266 MHz,19.1 GFLOPSAdreno 225, 400 MHz,28.8 GFLOPSAdreno 540, 710 MHz,567 G FLOPS(骁龙835搭载的GPU)也就是说最垃圾的Adreno 200(好像是个08年出的GPU?),在1920*1080分辨率60 FPS的情况下,忽略顶点着色器开销,理论上支持每个像素着色执行 2.4 / 0.12 = 20 次浮点数运算(实际使用肯定要打个折扣 ,这里没考虑GPU流水线其他步骤的开销,具体有多大差距我也不清楚,只能让懂GPU的大神来解答了),Lambert着色模型的核心 :saturate(dot(N, L)) * texColor * lightColor,如果GPU点乘没有专门指令的话,这个计算大概需要10个指令搞定,每个指令的输入都是4个浮点数组成的向量,即对应40次浮点数运算,这样来看的话,Adreno 200是扛不住的,不过12年上市的Adreno 225的Flops提升了10多倍,这个运算量也是小儿科了(28.8 / 0.12 = 240)
推荐阅读
- 傻子当国有银行行长都能赚钱这句话是否是对的
- 网通社|喜欢蔚来的越来越多了 连续四个月交付创新高 你是否愿意放弃特斯拉选择它?
- 豆瓣为啥受到同志社群的欢迎
- |PHEV车款没比较环保,新能源是否存在谎言呢?
- 运营商收取的流量费用价格是否合理
- 游戏公司一般咋识别游戏脚本
- 知乎上关于人生经验的介绍是否可能对青少年造成潜在危害
- 是否该停止密码掩饰了
- 织毛衣这种工艺是否会渐渐消失
- 给别人拉人头做项目,别人出事了,会连累到吗
