UE4 stat Unit

       在分析UE4的每帧耗时时,会看见3个时间,Game、Draw、GPU。这是因为UE4使用thread rendering,将游戏的逻辑线程和进行绘制的绘制线程分开。暂时只做了渲染线程独立,并没有实现多线程渲染,和Epic人交流的结果是,预计在 4.21 版本,充分发挥DX12,vulkan,metal的多线程渲染能力。GPU时长就是真正的绘制一帧消耗的时间,一般情况下和Game还有Draw线程时间和差不多,但是还要收Vsync,限帧等信号的影响。

Goodbye openGL

       在月初的WWDC2018上,苹果宣布了在iOS12中,将 openGL ES API 标记为 deprecated,并且不再接受 openGL ES 应用程序的提交,督促开发者尽快向Metal完成迁移。可以说,openGL的生命倒计时终于开始了。

PS: 有谣言说openCL在iOS上也被标记为deprecated了,这真的是笑话,因为iOS从来就没支持openCL过。。。

       我一直有个观点,就是 openGL 在移动设备上也许会消亡,但是在桌面上还要长期存活一段时间,因为一堆CAD软件估计是要固守 openGL 到死的。而 NVIDIA、AMD 更是希望这种情况到来,因为这样,以后就可以只在专业卡提供 openGL 驱动,而游戏卡不支持 openGL 了,更好的区分产品线。

       但是,Adobe的表现,真的让我大跌眼镜。Adobe在去 openGL/openCL 的动作上,真的是要快于其他各路CAD公司,甚至比很多做游戏的还要快。听说Adobe已经用 vulkan/metal 完成了前端的重写,并且编写了一个编译器,可以将 openCL 直接无痛迁移到 vulkan/metal 。想想连 Khronos 都棘手的 openCL 向 vulkan 迁移的问题都搞定了,只能说Adobe这波操作666。

Goodbye LDR

       今年,虽然不是openGL的deadline,但是应该是 openGL ES 2 的deadline了。腾讯的两款吃鸡游戏,放弃了 openGL ES 2 设备的支持,在Android上最低要求openGL ES 3,可以说打响了去 openGL ES 2 的第一枪。 openGL ES 2 在高端特效上,缺少MRT的支持是一个极度的软肋,最大贴图数只支持8个也很有问题。我们自己实现的某些效果,已经使用了9个以上的采样器,ES2根本运行不了,所以采用了去HDR(也就关闭了所有post processing)的方法釜底抽薪。

       LDR没有tone mapping,对于美术来说灯光布置非常复杂,虽然有节省带宽的优点,但是HDR使用小浮点格式(R11G11B10)的话也没那么费。而且post processing的缺失缺失会令画面非常寒碜。而且,LDR/HDR两套资源,会令游戏的包体非常大(某项目安卓安装包已经突破2G)。在HDR下,UE4提供了很多优化选项,不乏某些极其立竿见影的优化选项,甚至还有Significance manager这个可以彻底扭转各组件update逻辑的神器。虽然以前就预料到LDR会在PBS上消亡(Cel上课未必),自己亲手干掉了自己曾经写的众多LDR/HDR兼容代码,还是不胜唏嘘啊。