上一篇探讨了G-Buffer里如何紧凑并高质量地存储normal。长期以来,deferred一直被认为只能用于高端显卡,低端卡由于功能和带宽的限制,不适合使用deferred。虽然现今移动设备大行其道,但所有移动设备和桌面相比,都只能算低端。所以OpenGL ES上也一直都被forward渲染占领。一个引擎维护两套流水线是非常麻烦的事情,尤其对于KlayGE这样的开源轻量引擎。所以,如果能在低端设备上也能用同一条deferred流水线,能给维护和扩展提供巨大的方便。
经过一定的改进,deferred流水线已经可以在中上等级的OpenGL ES 2设备和D3D11 feature level 9.3设备上跑了。这样的硬件涵盖了NV GeforceFX 6000以上(2004年)、ATI Radeon X1000以上(2005年) ...
上一篇我们提到了SSSSS,作为本系列的最后一篇,本文将介绍KlayGE 4.4的OpenGL和OpenGLES插件的改进。
OpenGL 4.4
KlayGE在OpenGL方面一直是紧跟spec的步伐,这次也不例外。在八月份OpenGL 4.4发布的时候,glloader和KlayGE的OpenGL插件就很快加上了4.4的支持。并且这次把代码彻底过了一遍,很多原先通过扩展实现的功能,都尽量替换成用核心实现的,提高兼容性。
经过测试,OpenGL插件在NV和Intel的显卡上所有例子都能正常工作。
OpenGLES 3.0
虽然GLES3出了有一段时间了,但硬件支持度和开发环境都还没跟上,所以原先OpenGLES插件只支持2.0。这次尝试了PowerVR和Mali的OpenGLES 3模拟器,觉得还行,就加上了GLES3的支持。Adreno的模 ...
HDR post process几乎存在于所有PC桌面引擎中,也开始在一些高端移动平台上得到了支持。HDR太常见了,以至于这年头如果看到一个不带HDR的真实感实时渲染,就会觉得很突兀。(比如,在SIGGRAPH展会上,看了Qualcomm的展台,再看ARM和Imagination的,就有一种回到dx8时代的感觉。大部分原因就来自于Mali和PowerVR缺乏很好的HDR。)在这方面,KlayGE的目标是在不同平台上,都能尽量多地复用HDR post process里的组件,同时效果也尽量接近。首先让我们看一张只有LDR的图。
啥都支持的平台
代表的平台有D3D11 level 10+,OpenGL 3+。支持包括B10G11R11F在内的各种浮点纹理。在这样的平台上,KlayGE的HDR流程是这样的。注意红字标出来的数据 ...
网上看到的GPU比较,都是桌面和桌面比,移动和移动比。很多人对此没有概念,总觉得移动的CPU/GPU在性能上也能比肩桌面CPU/GPU。那么就让我们来看看把各家的顶级GPU放在一起比硬指标,是什么样的结果吧。资料来自wikipedia和厂商自家宣传。
计算单元对比
Model
Fab (nm)
Core
Clock rate
API
Core (MHz)
Memory (MHz)
NVIDIA GeForce GTX Titan
28
2688
836-993
6008
D3D 11.0, OpenGL 4.4, CUDA 5.5, OpenCL 1.2
NVIDIA Quadro K6000
28
2880
901.5
6008
D3D 11.0, OpenGL 4.4, CUDA 5.5, OpenCL 1.2
AMD Fusion APU 8670D
32
384
844-950
1066
D3D 11.0, OpenGL 4.3, OpenCL 1.2
AMD ...