梳理所学,永久更新
持续更新中......
主流的寻路算法:A星、B星(Branch 分支)、D 星(Dynamic A 星)、跳点寻路(JPS)、漏斗算法
F = G + H
启发式寻路,不一定能够最优,最优的前提是:启发式的选择恰到好处。
简化查找点,使得更快的搜索路径。
这个在Unity 内的 Nav 寻路的应用。主要场景是 三角形构成的地图,通过三角形共有边,来描述三角形的连通关系。所以共有边是 漏斗算法的第一步 要做的。然后逐步收敛夹角,这是描述可走区域的一种方式,当逐步收敛到无法收敛时,那么说明局部的可走已经确定了,最后连贯起来就是路径了。
这里还有个冷知识,关于场景中的 Mesh 生成 NavMesh 的过程,包含体素的知识。
主流的GPU架构发展了很久。
当前以其中一种来描述,
先描述一下架构,SM是GPU下的 Stream Process 簇,是一个集合体,再细分下去就是 Stream Process 最小单位,它们拥有共享的内存,这和CPU有很大差别,这意味着共享的读写,再加上大量的寄存器,读写速度更加快,另外数量庞大的寄存器,意味着线程上下文切换的代价更加小。
图灵架构、SM、GPU 内的多级缓存、共享缓存...
SoC、ARM 嵌入式、精简指令程序集、复合指令程序集
主要包含:逻辑运算+少部分存储器(寄存器+部分缓存器)
取指->译码->访存->执行->写回
这种描述其实和渲染管线的理念差不多,这也是计算机思想的精妙所在:分工是为了各个环节单一职责,流水线是为了减少等待和阻塞。现实社会的工厂车间流水线也是这样,工人执行各个环节的事情,流水线因此产生。
整个流水线也有很多硬件优化手段:
- 分支预测
- 数据前递
- 寄存器重命名(这个很模糊,我也没找到相关介绍的文献描述)
整个体系架构,是极简的硬件分工,将各个硬件的主要职责划分开来。这样是对人的参考,让电子设备具备:记忆与运算能力。记忆能力是存储器(包括硬盘、内存、缓存、寄存器。硬盘属于长期记忆,可持久化。内存、缓存、寄存器是短期记忆。存储能力相当于人的右脑)。运算能力是逻辑推理、数值计算等(相当于人的左脑)。
虚拟化、并发、持久化
源于进程与线程的资源分配问题,从单核的CPU发展到如今的多核CPU,当计算机运行多个进程时,多个进程之间必定会有抢占关系,主要抢占两方面的资源:CPU时间片、内存空间。
在时间片问题上,我们给每个进程运行一小段时间片,这种轮流分配的方式,尽量做到了多个进程都有机会运行,另外也避免了恶意进行持续占用CPU时间片,导致其他进程无法运行的问题。这种分配时间片的算法也有很多细节 。
在内存问题上,我们约束每个进程,不允许进程直接可以跨内存空间读写,也就是说每个进程只允许读写各自的内存空间。再者,进程所属的线程,线程之间可以共享所在进程的内存空间,但是也同样管控CPU时间片。
宏观上的并行,微观上的串行。在单核CPU上,可以很明显的凸显这个观点。
文件系统、序列化与反序列化
- C#、VB、F# 等语言都是可以编译成CIL,然后运行在CLR上
- 在Unity的项目中,C#编译后,属于托管代码,运行在Mono虚拟机上,这里的Mono类似于CLR
Java 编译,会得到Java字节码,然后运行在JVM上,才能跨平台。
如图:
这个在图形学中,光线追踪,渲染方程的积分项,需要了解到,另外还有蒙特卡洛方法求积分。
在图形学、以及空间运算,用的特别频繁。
AI开发会提及,比如棋类的极小极大值剪支算法。
傅里叶变换与傅里叶逆变换。
- 缓冲命中率
- 组合模式的优势
- 数据快照缓存、快速恢复数据很便利
- 丢失重传
- 编号,保持有序
- UDP包头更小
- 服务器权威
- 客户端部分可预测
- 客户端错误的恢复
- 状态包体进行压缩,采取增量更新,AOI
- 指令同步、时间同步
- 客户端的预测+回滚
- 服务器检验HashCode,防止作弊
- 客户端的快照
- 服务器的缓存快照,断线重连可以快速恢复
- 工具向:
- 可视化技能编辑工具
- 原子化拆分,做多种组合
- 表现连贯与流程,动画衔接
- 动画的打击感
- 网络延迟的处理
- 光线追踪
- 路径追踪
- 双向路径追踪
- 光子映射
先模糊再采样
- 视锥体剔除
- 遮挡剔除
- 三角面剔除
- 三角面裁剪
- 背面剔除
- 深度信息
- Albedo
- 金属度
- 粗糙度
- IK 算法,CCD
- MotionMatching,BVH文件的用途?
- PuppetMaster
- 辐射能量,单位 J
- 辐射通量,单位 W (J/t),可以理解为单位时间的辐射能量
- 辐射亮度,单位 W/(m^2*sr),可以理解为观察方向上单位面积中的辐射通量。
- 辐射强度,单位 W/m^2,表示单位面积中的辐射通量
- 辐射照度,单位 W/sr , 表示观察方向上的辐射通量
- 能量守恒
- 微表面原理
- BRDF 是什么?
- PBR 展开 BRDF 公式:
- 渲染方程的理解
- 前向渲染
- 延迟渲染
- 几何阶段
- 光栅化阶段
- 算法流程;
- Ray Matching
- 为何 SDF 可以加速光线求交?
大致流程如下:
- 从屏幕出发,打出一条观察线。
- 观察线捕捉到模型的表面所在的点
- 通过俄罗斯轮盘赌概率,随机得到投射情况
- PDF作为求能量公式的其中一项
- 递归反射情况
- 最后累计间接光照能量
- 间接光照+直接光照
极小极大值-剪支算法:
有限穷举,提前预测对方的决策,
- Socket
- RPC
- gRPC
- ARM 开发板
- Mind
since 2019