第一节 导入
tick:一般是先tickLogic再tickRender,先模拟(逻辑)再渲染。
第二节 游戏引擎

最基础的五层架构,由上到下:
- 工具层:提供编辑环境,方便可视化快速的进行游戏开发。
- 功能层:玩家、NPC运动交互等,游戏中的玩法行为。一些游戏的基础功能,能够让世界能够动起来、玩起来。
- 资源层:Resource、负责加载管理资源
- 核心层:各种功能处理模块的内核。
- 平台层:硬件设备的输入输出设备兼容,游戏平台的发布导出兼容。
第三节 构建游戏世界
总结
所有的对象都是一个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 的组合。

- Albedo 反照率纹理 :定义了物体表面的颜色和基本反射特性,影响光照和颜色表现。
- Normal 法线纹理 :定义了物体表面的凹凸细节,通过模拟表面法线方向增强细节,无需增加几何复杂度。
- Metallic 金属度纹理 :定义了物体表面的金属感,影响物体的反射和高光效果,区分金属与非金属材质。
- Roughness 粗糙度纹理 :定义了物体表面的粗糙程度,影响光线在表面的散射和反射的清晰度。
- AO Ambient Occlusion 环境光遮蔽 :定义了物体表面因环境遮挡产生的阴影效果,增加场景深度和真实感。
Map:贴图
贴图的具体表现形式是纹理,或者说贴图本身就是纹理。
当纹理附着在具体的物体表面时,则称之为贴图。map 还有另外一层含义——映射,其功能就是把纹理 Texture 的 UV 坐标映射到3D物体表面。
shaders:是源码的形式,但在引擎中当成数据处理。
Shader 实际上就是一段程序,它负责将输入的 Mesh 和 贴图/颜色等按照一定的方式组合起来(Mix),然后输出。Shader的作用就像一个方案,可以将砖块用于围墙,也可以作为地砖铺在地面上。
绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)。之后,我们便可以将材质赋予合适的renderer(渲染器)来进行渲染(输出)了。
第五节 渲染中的光和材质
基础光照解决方案
模拟一个均匀的光场,进而继续研究:

- 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魔法科技能够把整个游戏调节成
渲染管线:
- 一个画面中,基本是几十种上百种算法在工作。渲染管线进行管理。