Skip to content

门泊吴船亦已谋

Category: 游戏开发

MassEntity 学习

MassEntity 是 UE5 里面一个面向数据的框架,与 Unity DOTS 非常相似。 引入 ECS 的主要目的也是要充分利用多核 CPU 的并行能力,发挥缓存的优势,从而提高性能。

Vulkan 画三角形「十三」 创建命令缓冲区

命令在 Vulkan 中,比如绘图操作和内存传递,并不能直接经过函数调用来执行。我们必须要把所有需要执行的操作记录到命令缓冲区对象中。这样做的优势在于配置绘图命令的复杂工作能够提前且多线程进行。这之后,我们只需要在主循环中通知 Vulkan 执行这些命令

Vulkan 画三角形 第十章 着色器模块

与早期 API 不同,Vulkan 中的着色器代码必须要以字节码的格式指定,而不是像 GLSL、HLSL 这样人类可读的语法。这种字节码格式是 SPIR-V,它可以用于 Vulkan 和 OpenCL。它是一个用来写图形与计算着色器的格式,但是现在我们只关心可用于 Vulkan 图形流水线的着色器

Vulkan 画三角形 第九章 渲染路径

我们需要配置渲染时需要使用的帧缓冲区附着的相关信息。我们需要指定有多少个颜色和深度缓冲区,它们的采样数以及通过渲染操作应当如何处理它们的内容。所有的这些信息都会被封装到渲染路径对象中,于是我们添加一个成员变量来保存它

Vulkan 画三角形 第七章 创建图像视图

为了能够使用 VkImage,包括交换链中的在内,我们需要在渲染管线中创建 VkImageView。一个图像视图真的就是字面意思的图像的视图。它描述了如何访问这个图像以及访问这个图像的哪个部分,例如图像可能被当作不需要 Mipmap 的二维深度贴图

Vulkan 画三角形 第六章 创建交换链

我们在把图像展示到屏幕之前,需要先把它们渲染到缓冲区中,而交换链就是存放缓冲区的地方。交换链本质上是一个存放需要展示到屏幕的图像的队列。我们的应用程序要做的就是从这个队列中取出一个图像,然后在上面渲染,最后再返回给队列。这个队列是怎么工作的以及队列中的图像什么时候展示到屏幕上,它们都取决于交换链是怎么创建的,但是交换链一般的目的都是同步图像展示和屏幕刷新率

Vulkan 画三角形 第五章 创建逻辑设备

选取了物理设备之后,我们需要创建一个逻辑设备来跟它进行交互。逻辑设备的创建过程跟实例的创建过程类似,我们需要描述要用到的特性。我们还需要根据之前查询好的队列族,指定需要创建的队列。我们甚至可以对于同一个物理设备创建多个逻辑设备来应对不同的需求

Vulkan 画三角形 第三章 创建窗体表面

Vulkan 是一个跨平台的 API,它不能够直接与不同平台的窗体系统进行交互。为了在 Vulkan 与窗体系统之间建立连接来把渲染结果展示到屏幕上,我们需要使用一些 WSI 扩展。本文将会介绍 VK_KHR_surface 扩展。它暴露一个 VkSurfaceKHR 对象,这个对象代表一个我们可以把图像渲染上去的抽象表面

UE4 材质结点生成 HLSL 代码 源码浅析

使用 UE4 的材质编辑器的时候我们可以为材质的颜色、粗糙度、金属度等连接一个常量或者纹理结点,如果要实现复杂效果可能还会用到混合结点,最后就可能看到一个完整的材质其实是由一堆结点和它们之间的连线组成

渲染管线浅析

渲染管线会把内存中的三维模型输出到二维的屏幕上,它具有明显的先后顺序,每一个阶段的输出都会作为下一个阶段的输入。它也可以翻译为渲染流水线