XR 立体渲染模式
在 XR 中物体通常需要以立体(in sterro)的方式被渲染,即一个内容需要被绘制到左眼和右眼的纹理中,这种渲染方式被称为 `立体渲染视图(Stereo-Rendering)`,本文将介绍几种立体渲染的方式,包括常见的 `Multi-Pass` 和 `Multi-View`,以及通常针对眼动设备的 `Quad-View` 方式。主要将说明这些方式在渲染时所用的纹理数量和 DrawCall 数量的差异。
《Vulkan Tutorial》 笔记 13:Fixed Functions
在这一节中,会设定创建 Pipeline 中除了 Shader Modules 剩下的固定函数的一些操作,如 Viewport Size / Color Blending 模式,这些在 Vulklan 中都需要在创建渲染管线时设定,而在如 OpenGL 这样较老的图形 API 中,则可以在运行时修改。
《Vulkan Tutorial》 笔记 12:Shader Module
VkShaderModule 类用以封装和管理已编译好的着色器代码,本节将说明如何创建 Shader Module,以及如何将其传递给渲染管线的特定阶段。
《Vulkan Tutorial》 笔记 11:图形管线介绍
Vulkan 中需要自己设定图形渲染管线,在一些旧的图形 API 如 OpenGL 中,时可以通过一些函数修改渲染管线的,如通过 `glBlendFunc` 修改管线中对于混合的操作。但在 Vulkan 中管线几乎是完全不变的,因此每当需要修改管线设置,就必须重新创建管线。
《Vulkan Tutorial》 笔记 10: Image Views
为了使用在 Swap Chain 最后获取的 VkImage,需要首先创建 VkImageView 对象。该对象作为外部对这个 Image 的 View,即该对象描述了该如何访问 Image,以及需要访问 Image 的哪一部分。如可以创建一个 Image View,描述该 Image 应该作为一个 2D 深度纹理,且不需要任何的 Mipmap Level。
《Vulkan Tutorial》 笔记 09: Swap Chain
在 Vulkan 中必须显式的创建 Swap Chain。SwapChain 是与 Surface 绑定的数据结构,其包含了多个 Image,应用渲染时会将渲染的结果放置到这些 Image 中,当调用 Present 时,SwapChain 会将这些 Image 通过其与 Surface 绑定,传递给 Surface,Surface 再将这些 Image 显示到平台的窗口或屏幕上。
《Vulkan Tutorial》 笔记 08: 窗口 Surface
因为 Vulkan 是一个平台不相关的 API,所以它无法直接与 Window 操作系统交互。为了建立 Vulkan 和 Window 操作系统之间的连接,就需要使用 `WSI(Window System Integration)` 拓展,其中最关键的就是 Surface。
《Vulkan Tutorial》 笔记 07: 逻辑设备和队列
在创建了 Physical Device(VkPhysicalDevice) 后需要建立一个 Logical Device (VkDevice)来与之交互。在创建 Logical Devices 时还需要指定需要从 Physical Devices 的 Queue Family 中创建多少 Queue。
《Vulkan Tutorial》 笔记 06:物理设备和 Queue Family
选择符合要求的物理设备和 Queue Family,物理设备是 Vulkan 的一个重要概念,它表示了一个支持 Vulkan 的 GPU 设备,Queue Family 则是物理设备的一个属性,表示了该设备支持的命令队列类型。
《Vulkan Tutorial》 笔记 05: Validation Layers
本部分结果重构前的可参考 _05_Validation_Layer
重构后的可参考 _05a_Refactor_Validation_Layer
在程序变得更加复杂之前,需要了解 Validation layers 帮助调试。
#什么是 Validation Layers
因为 Vulkan API 的设计理念是最小化驱动的负载,因此在 API 层只有非常少的错误检测。
为此 Vulkan 引入 ...