本期为GAMES104《现代游戏引擎:从入门到实践》视频公开课文字实录第14期。本课程由GAMES(图形学与混合现实研讨会)发起,游戏引擎技术专家王希携手游戏引擎一线开发者共同研发。
课程共计22个课时,将介绍现代游戏引擎所涉及的系统架构,技术点,引擎系统相关的知识。为配合学习实践,课程组在 GitHub 上开源了小引擎Piccolo,上线1个月即获得了2900+star, 累计下载量已超过20000+。
以下内容为公开课视频转文字版本,为阅读通顺,有删减
01「前言」
今天我们继续介绍渲染。我个人认为,第5讲是难度最大的一讲,我们花了很多时间来准备课件,但是我并不是特别有信心我们能够讲好。
因为今天要介绍的主题所包含的内容特别丰富,如果将今天讲课的内容分成十节课来讲,也没有太大问题。今天讲座的主题就是绘制。在上一节课中,我们介绍了网格、材质、纹理等知识点。这些数据放在一起,GPU如何组织这些数据,如何处理这些数据?这时就需要GPU进行绘制。绘制就是渲染的核心。
02「渲染方程及其挑战」
绘制需要考虑的第一个问题就是光。光子从光源发射出来,经过反射被吸收或反弹,直至最后进入我们的眼睛,这一过程的原理是什么?第二个问题就是光和物质之间如何相互作用?物质对光是进行反弹,亦或是吸收,还是让光线在物质内部不断折射?物质和光之间如何相互作用决定了这个物体外表的观感。最后一个问题就是Shader的具体实现问题。Shader中有很多复杂的运算。所以今天我们介绍的光照、材质和着色器,实际上是一个非常庞杂的系统,我们竭尽所能将这些内容放在一讲中。我们将过去几十年全世界最聪明的理论科学家,以及图形学的科研工作者和工程师们的各种聪明想法集结在一起。在这些想法中,有很多大胆的假设,以及一些“Hack”技术,并且在实践中行之有效,于是最终形成了非常棒的游戏画面体验。
在本节课中,会出现很多晦涩难懂的数学公式。如果大家觉得难以理解,不必着急,可以逐步建立对于这些概念的理解和认知。