梳理所学,永久更新
0. RoadMap
持续更新中......
1.计算机科学
1.1.算法与数据结构
1.1.1.LeetCode
1.1.2.十大排序
1.1.3.动态规划
分治算法
回溯
贪心算法
寻路算法
主流的寻路算法:A星、B星(Branch 分支)、D 星(Dynamic A 星)、跳点寻路(JPS)、漏斗算法
A星
F = G + H
启发式寻路,不一定能够最优,最优的前提是:启发式的选择恰到好处。
跳点寻路
简化查找点,使得更快的搜索路径。
漏斗算法
这个在Unity 内的 Nav 寻路的应用。主要场景是 三角形构成的地图,通过三角形共有边,来描述三角形的连通关系。所以共有边是 漏斗算法的第一步 要做的。然后逐步收敛夹角,这是描述可走区域的一种方式,当逐步收敛到无法收敛时,那么说明局部的可走已经确定了,最后连贯起来就是路径了。
这里还有个冷知识,关于场景中的 Mesh 生成 NavMesh 的过程,包含体素的知识。
GPU 架构
主流的GPU架构发展了很久。
当前以其中一种来描述,
先描述一下架构,SM是GPU下的 Stream Process 簇,是一个集合体,再细分下去就是 Stream Process 最小单位,它们拥有共享的内存,这和CPU有很大差别,这意味着共享的读写,再加上大量的寄存器,读写速度更加快,另外数量庞大的寄存器,意味着线程上下文切换的代价更加小。
GPU 硬件设计
CPU 架构
SoC、ARM 嵌入式、精简指令程序集、复合指令程序集
CPU 硬件设计
指令流水线
计算机组成原理
冯-诺伊曼
操作系统
虚拟化、并发、持久化
虚拟化
源于进程与线程的资源分配问题,从单核的CPU发展到如今的多核CPU,当计算机运行多个进程时,多个进程之间必定会有抢占关系,主要抢占两方面的资源:CPU时间片、内存空间。
在时间片问题上,我们给每个进程运行一小段时间片,这种轮流分配的方式,尽量做到了多个进程都有机会运行,另外也避免了恶意进行持续占用CPU时间片,导致其他进程无法运行的问题。这种分配时间片的算法也有很多细节 。
在内存问题上,我们约束每个进程,不允许进程直接可以跨内存空间读写,也就是说每个进程只允许读写各自的内存空间。再者,进程所属的线程,线程之间可以共享所在进程的内存空间,但是也同样管控CPU时间片。
并发
宏观上的并行,微观上的串行。在单核CPU上,可以很明显的凸显这个观点。
持久化
文件系统、序列化与反序列化
编程语言
.NET
CIL 与 CLR
Java
Java 字节码 与 JVM
软件开发
设计模式
计算机数学
微积分
线性代数
概率统计
博弈论
信号与系统
游戏编程
性能优化
ECS
可靠UDP
状态同步
帧同步
动作游戏设计
游戏引擎
渲染向
抗锯齿
剔除算法
G-Buff
物理与动画
布娃娃
计算机图形学
辐射度量学
- 辐射能量,单位 J
- 辐射通量,单位 W (J/t),可以理解为单位时间的辐射能量
- 辐射亮度,单位 W/(m^2*sr),可以理解为观察方向上单位面积中的辐射通量。
- 辐射强度,单位 W/m^2,表示单位面积中的辐射通量
- 辐射照度,单位 W/sr , 表示观察方向上的辐射通量