引言
本课程将介绍现代游戏引擎所涉及的系统架构,技术点,引擎系统相关的知识。通过该课程,你能够对游戏引擎建立起一个全面且完整的了解。本节主要是介绍游戏引擎的渲染实践。
Rendering System in Games
从游戏刚刚开始的时候,我们就和绘制渲染走在一起。
最早的游戏需要显示在示波器上,而那时我们就已经想努力表现画面了。到了红白机时代即使硬件只能显示几种颜色,人们依旧构建了绘制系统奉献了诸多优秀的游戏。实际上现代游戏的绘制系统越来越丰富,越来越复杂,很多人提到游戏引擎下意识会说:“游戏引擎是不是就是绘制引擎?”。游戏引擎显然不止绘制,但它从技术难度和专业壁垒来讲确实是非常重要的一环。
那么这里顺带一提,没有渲染系统的游戏也是存在的:文字游戏。
Rendering on Graphics Theory
GAMES101 课程给大家系统地讲了计算机图形学的一些理论,这些算法是游戏渲染的基础。但同时游戏的渲染也存在一些区别:
- 图形学解决的问题是明确的
- 图形学不会特别关注硬件是如何实现的,而更关注算法和数学上的正确性
- 实时 Realtime(30 FPS)/ 交互 Interactive(10 FPS)/ 离线渲染 Offline Rendering
Challenges on Game Rendering
在游戏中的绘制系统我们遇到的挑战都有什么呢?
第一个挑战是游戏中需要处理的物体对象和各种效果是极其复杂的。举个例子,在我的场景中有成千上万的对象,并且每个对象的形式都不尽相同:植被、角色、天空云……我们需要用到的算法也随之不同,整体上还要加大量的后处理和光照运算,所以游戏的绘制系统是一个 All in One 的组合。
第二个挑战是我们并不是跑在一个理想的设备上,我们的任务不是验证其正确性而是让它跑在现代的设备上。所有的算法必须基于这些 PC、主机或者小小的 Switch 上面,所以需要我们对硬件的了解非常深,适配当代的硬件。
第三个挑战是在图形学效果不错的帧率放到游戏中可能就不够看了,并且帧率必须要稳定。近年的游戏给我们的时间越来越少,画面要求却越来越高。
最后一个挑战是显卡可以 100% 吃掉,但 CPU 的利用率却提不起来。所以在真实的游戏引擎中我们不能像计算机图形学项目那样把所有计算资源全部吃掉,需要留给前面说的游戏逻辑、物理、人工智能等等系统。