GAME104总结

第一节 导入

tick:一般是先tickLogic再tickRender,先模拟(逻辑)再渲染。

第二节 游戏引擎

image-20241028095936406

最基础的五层架构,由上到下:

  1. 工具层:提供编辑环境,方便可视化快速的进行游戏开发。
  2. 功能层:玩家、NPC运动交互等,游戏中的玩法行为。一些游戏的基础功能,能够让世界能够动起来、玩起来。
  3. 资源层:Resource、负责加载管理资源
  4. 核心层:各种功能处理模块的内核。
  5. 平台层:硬件设备的输入输出设备兼容,游戏平台的发布导出兼容。

第三节 构建游戏世界

总结

所有的对象都是一个object。

每个object都是用component-base的方法去描述他,用component去组合成不同的行为。

所有的component用Tick的方法去不断更新逻辑。

在所有的GO中,通过一套复杂的消息机制去彼此通讯。

针对大量的GO,我们需要一套非常高效的层次结构的场景管理机制。

场景管理机制:不划分管理、画格管理、层级结构管理(四叉树)、空间数据管理

第四节 物体渲染

物体渲染描述

Material 的外观由 Map 来展现,Map 本身就是 Texture。so,材质 Material 包含贴图 Map,贴图包含纹理 Texture。

Mesh:通过记录三角面的顶点和顶点数据,描述其网格。

Texture、Map 用于描述物体的外观,Material 用于描述物体的材料和质感。但是,依靠这3个属性,并不能正确的展现一个物体。

一个物体还应该有外形,也就是用于 描述物体的形状 。

在 unity 中,Mesh 的作用是用于描述物体的形状。

Texture:纹理

纹理 泛指物体表面上所呈现的花纹或线条,是物体上呈现的线形纹路。

在 unity 中,Texture 表现为可视的 图片 ,用于 展示外观 。

Materials:眼睛看到的材质,确定物体的外观以及物体如何与光相互作用

材质可以看成是材料和质感 的结合。在渲染程式中,它是表面各可视属性的结合,这些可视属性是指表面的色彩、纹理、光滑度、透明度、反射率、折射率、发光度等。

在 unity 中,Material 表现为纹理 Texture 和着色器 Shader 的组合。

image-20241028182341935

  • Albedo 反照率纹理 :定义了物体表面的颜色和基本反射特性,影响光照和颜色表现。
  • Normal 法线纹理 :定义了物体表面的凹凸细节,通过模拟表面法线方向增强细节,无需增加几何复杂度。
  • Metallic 金属度纹理 :定义了物体表面的金属感,影响物体的反射和高光效果,区分金属与非金属材质。
  • Roughness 粗糙度纹理 :定义了物体表面的粗糙程度,影响光线在表面的散射和反射的清晰度。
  • AO Ambient Occlusion 环境光遮蔽 :定义了物体表面因环境遮挡产生的阴影效果,增加场景深度和真实感。

Map:贴图

贴图的具体表现形式是纹理,或者说贴图本身就是纹理。

当纹理附着在具体的物体表面时,则称之为贴图。map 还有另外一层含义——映射,其功能就是把纹理 Texture 的 UV 坐标映射到3D物体表面。

shaders:是源码的形式,但在引擎中当成数据处理。

Shader 实际上就是一段程序,它负责将输入的 Mesh 和 贴图/颜色等按照一定的方式组合起来(Mix),然后输出。Shader的作用就像一个方案,可以将砖块用于围墙,也可以作为地砖铺在地面上。

绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)。之后,我们便可以将材质赋予合适的renderer(渲染器)来进行渲染(输出)了。

第五节 渲染中的光和材质

基础光照解决方案

模拟一个均匀的光场,进而继续研究:

image-20241031114031385

  • simple Light: 简单的主导光
  • ambient light :把场景中所有的光(环境光)用一个光来表示。
  • Environment Map Reflection: 环境贴图

Blinn-Phong 材质模型环境光(ambient)+物体的漫反射(diffuse)+物体的镜面反射(specular)

Shadow Map:预处理出一个shadow map表示阴影部分。找到光源对物体的zbuffer,对比视角的zbuffer。不一致就是阴影

方案总结:

  • simple light + Ambient表示基本材质。

  • environment map去hack一下快速的反射,然后把光的部分hack掉。

  • 用Blinn-Phong把卷积的问题给简化了。

  • 加上一个shadow map简单在光源空间采样,hack出来这部分光是否可见。

上个时代光照解决方案

全局光照=直接+间接+间间接+间间间接+…

Indirect Light(间接光)表示方案:

  • 使用多项式计算(难度大,可以优化比如用球面调和函数)与材质BRDF卷积计算间接光照
  • Spherical Harmonics SH 球面调和函数:球谐函数展开,只取前几阶作近似,这样能减少计算的难度。

Light Map:

  • 空间换时间。游戏场景参数化到二维的texture(那也可以考虑变成三维的xxx?)

  • 步骤:

    1.制作atlas(航海图,地图):很多的几何拍到一张图上去。

    2.Lighting:light farm(很多台电脑做成的集群)光源设置好、参数设置好,直接开始烘培。

Light Probe(光探针)+Reflection Probe(反射探针):

  • light probe光探针捕捉周围环境的光照。

    可为动态物体提供间接光照效果

  • Reflection Prob 反射探针捕获周围环境,生成一个立方体贴图。

    可以用来模拟物体的反射效果。

物理材质解决方案

Microfacet Theory 微平面理论:

  • 表面有许多的反射,看起来粗糙还是光滑和其表面法向的聚集度有关。
  • 法向比较聚集就光滑。

BRDF:

  • BRDF 双向反射分布函数,描述物体表面将光反射方面的函数。
  • GGX模型:特定的BRDF模型,基于微平面理论。光打到物体表面,要么被反射,要么被吸收。
  • Disney的BRDF信条

PBR:

  • 基于物理的渲染技术。使用基于物理的BRDF模型来模拟光线与物体表面的相互作用。
  • SG模型:用图来调节,能够非常精准的进行调节。
  • MR模型:在SG模型外包了一层,把SG能够精准调节的参数做限制,将灵活度下降,把可控性提高。

IBL 光照:

  • 一种先进的光照技术
  • 对真实的光照提前进行一些预处理

BRDF、PBR和IBL:

  • PBR是一种渲染框架,依赖于BRDF模型来计算物体表面的光照效果
  • IBL提供了环境光照数据,这些数据被PBR和BRDF模型用来模拟更加真实和复杂的光照效果。

Shadow的解决方案

Cascade Shadow:把shadow分成几层,根据视锥的举例,采集不同距离下的shadow map。

软阴影算法:做软阴影的算法——PCF、PCSS、Variance Soft Shadow Map

总结

光:Light map(基本被淘汰)、Light Probe(光探针)+Reflection Probe

材质:PBR模型(SG、MR模型)+IBL(对环境光、背光面的表达)

阴影:Cascade shadow + VSSM等

新时代下的渲染

Light map、light probe等这些在突破的边缘。

Real-Time Ray-Tracing 实时光追:现代游戏比较多都用来做反射。将会改变实时全局光照。

第六节 现实世界模拟

大地

几何

LOD Level of Detail 多细节层次

  • 根据物体在场景中的重要性、与观察者的距离等因素,为物体提供不同层次的细节表示。
  • 例如,在一个大型的 3D 游戏场景中,远处的山脉可能只需要用相对简单的几何形状和纹理来表示,而近处的建筑物则需要更精细的建模,包括复杂的墙体结构、窗户细节、门的纹理等。

FoV Field of View 视场角:提供视野范围和细节表现

Mesh Subdivision 网格细分:

  • Triangle-Based Subdivision 三角形细分
  • QuadTree-Based Subdivision 四边形细分:现代用的最多,基于四叉树的表达(正方形切分)
  • T-Junctions

材质

比如用PBR的MR模型。

大气、云。。。

第七节 后处理、渲染管线

一些细节处理(后处理)、渲染管线。

AO Ambient Occlusion 环境光遮蔽:

  • SSAO、SSAO+、HBAO、GTAO

雾效 Fog

  • Depth Fog、Height Fog、Voxel-based Volumetric Fog

Anti-aliasing 抗锯齿(反走样):

  • 多采样几次,将采样变化的值去取平均。
  • SSAA、MSAA是经典算法,目前常用的是FXAA、TAA。

后处理:

  • Bloom 模拟高亮区域的光晕扩散现象。

    ​ Airy disk 艾里圆盘

  • Tone Mapping:原始的HDR处理,会出现色偏的现象。这时用一个Tone Mapping处理。

    HDR渲染:阳光直射的地方亮度高,阴影亮度低。

    • Filmic、ACES

渲染系统总结:

  • mesh材质用sharding绘制,然后还要裁剪。
  • shadowing、global lllumination比较难,PBR材质统一天下。
  • 世界难以表达的地形、天空和云,通过一些积分方程等模拟这个世界。
  • AO表达世界凹凸有致,Fog让世界有层次感,AA让世界的效果更加平滑。接着要对时间美颜,Bloom一个光晕的效果,Tone Mapping进行正确的曝光,Color Grading魔法科技能够把整个游戏调节成

渲染管线:

  • 一个画面中,基本是几十种上百种算法在工作。渲染管线进行管理。

第八节 动画系统

第九节 高级动画技术

第十节 物理系统

第十五节 游戏gameplay玩法基础系统

第二十节 面向数据编程与任务系统