Games104现代游戏引擎入门-lecture4游戏中的渲染系统
- 1.有没有选人的游戏没?
- 2 图形学渲染理论
- 3 游戏渲染的挑战
- 4 游戏引擎的渲染框架
- 5 渲染
- 6 GPU
- 7 Modern Hardware Pipeline
- 8 Renderable
- 9 Render in Engine
- 10 可见性裁剪
- 11 纹理压缩
- 12 工具
- 13 Cluster-based mesh pipeline
- 14 Nanite
- 15 绘制系统四个点
- 16 PILoT
- 17 视频

1.有没有选人的游戏没?

绘制从专业程度来说是最难的一部分。
有游戏没有引擎–文字游戏。
2 图形学渲染理论
辐射度算法

3 游戏渲染的挑战
1 物体很多,渲染效果的类型很多

2 需要深度适配现代的CPU and GPU

3 帧越来越大

4 CPU bandwidth


4 游戏引擎的渲染框架
GPU的硬件的架构;
材质,shader,光照
特殊渲染
pipeline:延迟渲染。。。

该门课程不讲以下部分:

5 渲染

堵在像素之后的事情;
投影和光栅化

然后开始着色;
数据运算,常数的访问,纹理的访问就可以得到你想要的结果。

采纹理其实是很费资源的。
其中一个像素点 颜色,我要做7次插值

6 GPU

1 SIMD and SMIT
SMIT:同一条指令,同时执行很多次。
用同样的代码,大家一起跑。

结构是重复的。
一个显卡是放了很多个内核。
SMT架构


数据在计算机中流动是很耗费资源的。数据在不同的单元中搬来搬去也是非常慢的。
数据是单向运输,从cpu到GPU,尽量不要从GPU中读取数据。

缓冲,对现代计算的影响是非常大的。
a在我的内存上,cpu发现不在自己的缓冲中,需要在内存中去找,需要等待个100多个时钟周期。
数据一定要放在一起。
数据都在我的缓冲中,cash hit。如果不在缓冲中,cash gap.
纹理没做好,如果老是让计算机做cash gap的时候,效率就会下降。

GPU Bounds and Perfomrmance
计算机就是一个流水线,有一个卡主就卡住

7 Modern Hardware Pipeline


学渲染之前,要了解显卡到底是如何工作的?

做游戏开发的,懂点概念挺好。
8 Renderable

Meah render component 是render的核心

1 Mesh

存索引值,定点的数量只有三角形的一半;可以节省内存。

每个定点都有一个法向:每个顶点都要定义一个normal。

2 Material
材质系统和物理材质容易混淆;
强调的是摩擦系数,相近都不一样。
物理材质会单独的去定义。


3 纹理
纹理是材质中非常重要的表达形式。

4 shader
是源码,但是在游戏中会当做数据来处理。

9 Render in Engine


submesh,按照每个对象,每个物体,每个mesh根据材质进行切分,然后相同的材质归类到一起,用大库去管理。

很多shader都是一样的。


instance一定要牢记:这个数据是我的定义,这个数据是我的实例。


GPU Batch Rendering:优化
很多物体是一模一样的,

10 可见性裁剪
是基础的


1 包围盒
包围球
AABB:轴对称包围盒,计算效率是最高的
OBB:轴向包围盒
包围盒是计算的基础。

BVH:

BVH用的很多,适合用动态场景的加速!

PVS: 思想很有用



2 GPU Culling
先存储深度,渲染的时候先看深度。
遮挡物的深度图,很复杂的场景用得着。

11 纹理压缩
非常重要的模块。

压缩算法不支持访问。
采取的思想是切成小块,然后去压缩。

块压缩
BC7,DXTC
ASTC/ETC/PVRTC

12 工具
blender越来越好了。



扫描,基于实体的扫描



13 Cluster-based mesh pipeline

模型表达的管线
非常精细的模型–分成非常小的部分。
非常高效的处理

三角形无数的细化,
Meshshader–可以用一个算法,代码写起来不太好理解。
非常需要关注的前沿方向。




14 Nanite

15 绘制系统四个点
(1)工程科学:依赖于硬件,知道性能卡点在哪里、
(2)mesh ,模型,材质这些数据之间的关系,mesh和submesh之间的关系就是非常好的解决方案。
(3)优化的时候让计算机do nothing
(4)使用GPU计算。

16 PILoT
单独来学习











