不妨设想一下未来的游戏引擎都会有哪些特性?

不妨设想一下未来的游戏引擎都会有哪些特性?

一直从事渲染引擎的开发,也经常关注其他游戏引擎的开发。 其实开发久了,我发现有一些问题需要考虑:怎样才算是引擎,什么才算是优秀的引擎? 我觉得一个引擎不应该仅仅能做出一款商业游戏才算称职。 下面我们就来看看目前比较知名的各具特色的商用引擎。 让我们想象一下未来的游戏引擎将具有哪些功能:

1.多线程

记得大概一两年前,很多人还在感觉多线程对游戏的加速作用不大。 不过一转眼,我们已经进入了四核甚至八核大行其道的时代,我想多核可能离我们并不遥远。 最初游戏运营,多线程在游戏中的使用仅限于在单独的线程中独立执行渲染线程,以实现 CPU 和 GPU 操作的同步执行。 但是,在多核时代,这肯定无法发挥出CPU的全部实力。 试想其他可能被并行加速的操作:骨骼动画、粒子系统、AI,甚至场景图遍历。 想象空间还是很大的。

2. GPU通用计算(Cuda、Direct Compute、OpenCL)

与上面类似,骨骼动画和粒子系统都可以通过GPU通用计算来加速。 DX11 通过直接计算提供更好的 OIT 和其他效果。 相信其他应用也不难挖。

3.更全面支持各种渲染API(DX9、DX10、DX11、OpenGL、OpenGL ES!)

能全面支持DX9、DX10、DX11、OpenGL图形API,并用统一的接口提供API提供的所有功能,恐怕没有几个引擎能做到。 这里要强调的是OpenGL ES。 现在移动设备有取代PC的趋势。 支持OpenGL ES可能是未来引擎不可或缺的功能。 但是考虑到有些平台对开发环境有特殊的要求,比如WM7只支持.Net开发,这给我们开发一个通用的跨平台引擎带来了更大的难度。

4.更好的场景管理加速

目前看来kd tree是比较好的Scene Graph。 为了达到更好的加速效果,往往需要结合其他加速方式:统一的LOD机制(Geometry LOD、Shader LOD、Texture LOD); 几何组合),减少绘制调用; 实例化,也减少了draw call; 甚至将碎片化的小图像合并成一个大的纹理图集,等等。 . .

5.更好的材料和照明

目前统一的Blinn-Phong照明迟早会被取代游戏动态,而Ward可能是下一个通用的照明模型。 另外,不同的材质,比如石材、陶瓷、玻璃、布料等,会有不同的计算,这里还有很大的提升空间。

6.更好的Shader系统

传统上有非常成熟的shader tree/shader graph系统,现在Dx11带来了Dynamic Shader Linkage特性,期待在这方面的突破。

7.更逼真的动画系统

动画可能是国内开发团队最忽视的领域。 这并不是说我们没有投入足够的美术资源来完成动画,而是我们在尖端的动画技术上还远远落后。 Kinect来了,动作捕捉还会远吗? 如果要模拟角色的动作,不仅需要有真实的动作数据图形引擎和游戏引擎,更重要的是角色的动作与周围环境的交互。 无论是穿越障碍物还是飞越墙壁,都离不开与环境的互动。 如果只是单纯的玩动画,那只能给人一种人偶一样的感觉。

8.脚本语言的广泛使用带来更多的动态特性

脚本绝不仅仅在 UI 系统中使用。 人工智能甚至渲染管道的控制都可以让脚本语言接管。 LUA应该是最佳人选。 可能有人会说用脚本语言来控制渲染管线效率太低了。 这个缺点是不可否认的,但它也带来了很多好处。 编辑器中的实时编辑和运行甚至图形控制都可以带来更大的轻松。 可用性。 我大胆提出一个想法,一个系统可以在游戏发布前将LUA脚本语言编译成C++代码,然后使用其他C++编译器(如ICC、GCC)将C++代码生成到目标DLL库中。 这似乎让我们回到了原点,但是中间环节还是带来了很多好处。

9. 更聪明的人工智能

不用说。

更具体的特征 1. Mega Texture (SVT)

只要看看 ID Tech5,就可以了解对无限纹理的支持会带来什么。 它的重要性不言而喻,也可以参考Sparse Virtual Texture。

2.实时GI(级联光传播体积,SSGI,...)

我不会详细介绍其他具体技术,例如地形、阴影、曲面细分等。

暂时想到这些图形引擎和游戏引擎,随时可能加减。 但这还不够吗?

这。 . 有一天光栅化会被实时光线追踪所取代吗? 这。 . . .