Chapter.0 序 太阳在缓缓地落下,在太阳的前方,是一片蓝色的海,一只灰色的狼在海边呆呆地坐着。在它静静的坐着的时候,一只海鸥飞到了它的脚边寻找食物。 如果在以前,这只狼一定会去猎杀眼前的海鸥,但现在,似乎它的眼中只剩下了落寞。慢慢的。它的眉头皱了起来,看着这只慢慢飞向大海的灰色的海鸥… 然后,回头走向了田野。 Chapter.1 草原猎手 舍尔特是一个四周环海的岛国,虽然舍尔特是一个小型的国家,但实际上由于天然的地理条件,导致这个国家的物资十分的富饶,舍尔特中的大部分小狼的童年都是在无忧无虑中度过的。

如何在没有 sln 的项目下生成 sln 1D:\UnrealEngine\UE_5.0\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe -projectfiles -project="C:\D\GithubRepo\GASDocumentation\GASDocumentation.uproject" -game -engine -progress -2019 GAS...

[toc] # 空间划分算法 # 四叉树 每个四叉树节点都有四个子节点,子节点只在需要时创建 创建子节点时会触发切割,即将一个完整的树节点切割成四个等大小的子节点 切割子节点后需要确定切割前节点内的元素都在新节点的哪里,并进行更新 可以用于加速碰撞检测 # 基于四叉树的碰撞检测优化 遍历所有待碰撞检测节点 找到当前节点所在的四叉树节点 对同一四叉树节点内的物体进行碰撞检测 (可暴力) # 非线性八叉树 Tag: 线性八叉树是非线性八叉树的优化版本,实际上并无太大区别 八叉树实际上和四叉树的创建思路一致,区别不同的是八叉树是进行空间上的划分,每次不断地将空间切分为上四下四的八个子空间...

[toc] DirectX12 这本书中介绍的大部分都是 局部光照模型 # 光照 # 计算三角面法向量 先计算出三角形的两个边向量 计算两个向量的叉积 在 DirectX12 中,可以通过使用 XMVector3Normalize 函数将一个向量进行归一化,即三角形平面法线即为: XMVector3Normalize (叉积) 曲面顶点 (如三角形的三个顶点) 处的法线通常会采用一种 求法线平均值 的方式来计算顶点近似法线。 即计算该顶点周围 N 个平面的法线的和的归一化。...

[toc] # 利用 Direct3D 绘制几何体 (续) # 构建 Shader 流程: - 初始化 - 编译着色器并缓存到 ID3DBlob 中 - 设置着色器所需要从 CPU 端接受的点点着色器输入的布局描述 - 构建几何资源: BuildShapeGeometry (在这一步使用上传堆填充上面的布局描述) - 构建流水线时,将顶点着色器 Blob / 片元着色器 Blob/cb 布局以及数据等填充进 PSO (D3D12_GRAPHICS_PIPELINE_STATE_DESC) - 填充 constantBuffer,(包含 ObjectConstantsBuffer 和...

# 引用 [1] 游戏引擎编程实战 https://zhuanlan.zhihu.com/p/424785264 [2] DirectX123D 游戏开发实战 [3] Direct12 入门学习 https://zhuanlan.zhihu.com/p/352433339 [toc] # 资源 # Resource D3D 使用资源来统一表示 GPU资源 ,不管是一块 Buffer 还是一张 texture。 GPU 不与渲染管线直接绑定,而是通过 描述符(Descriptor) 作为中间对象来绑定。 # Descriptor/View 视图与描述符是同义词 描述符,实际上 D3D...

# 输入布局 # 顶点缓冲区 GPU 会从 缓冲区 中读取数据并进行处理,如之前提到的 回读堆、默认堆 等。 创建顶点缓冲区和应用流程 1. D3D12_RESOURCE_DESC 结构体描述缓冲区资源。 2. ID3D12Device::CreateCommittedResource 创建 ID3D12Resource 对象。 3. 绑定到顶点缓冲区视图 (可以通过 ID3D12Resource 获得堆中地址) 4. 将视图绑定到渲染流水线上的一个插槽中 (input slot, 通过 ID3D12GraphicsCmmandList::IASVertexBuffers,...

[toc] # 世界坐标到局部坐标 上图表达的主要是: 最直接的求变换矩阵的方法,就是直接求 A空间的基向量和原点 相对于 B空间 的三个基向量和原点的坐标u_x、y_x、w_x、Q_xu\_x、y\_x、w\_x、Q\_xu_x、y_x、w_x、Q_x 得到这四个变量后就可以得出上图中的变换矩阵 将向量 / 坐标在 A 空间内的值左乘上变换矩阵即可得到在 B空间 中的值 龙书上说上面那种方法虽然直观,但是求起来会比较不直观 所以一般在图形学上会使用 SRT 矩阵来求转换矩阵 这个方式由于可以直接通过模板矩阵直接得到对应的 SRT 矩阵,所以求起来会轻松很多 #...

[toc] # 颜色 DirectXMath 库使用 SIMD 技术加快数据的处理速度。 32 位颜色 (RGBA 各 1 个字节), PackedVector::XMLoadColor (COLOR 转换为 VECTOR), PackedVector::XMStoreColor (VECTOR 转换为 Color) # 渲染流水线概述 在输出合并阶段,数据会被写到像后台缓冲区这样的纹理当中。 事实上,输出合并阶段是 CPU 和 GPU 双向的 # 输入装配阶段 输入装配阶段从显存中读取几何数据,然后装配成三角 / 线段图元 DX12 可以将 顶点缓冲区 处理成如下几种拓扑形式...

[toc] # 引用 https://docs.microsoft.com/zh-cn/windows/win32/direct3d12/design-philosophy-of-command-queues-and-command-lists # 概述 早先的 OpenGL 和 DirectX 在渲染时通常是在资源设置完毕后直接提交给 GPU 进行渲染,这种线性的流程很难进行并行化的设计。 为了改善这一问题,实现 工作的重用 和 多线程的利用 ,需要对 应用向GPU提交渲染工作的方式 进行根本性的设计与改变。 新版的提交当时相对于早期的提交方式主要有以下几个不同: 删除即时上下文 (...