基本信息

内容简介
作译者
目录
前 言
致 谢
作者简介
审阅者简介
第1章 开始学习新一代3D图形API 1
1.1 Vulkan及其演化史1
1.2 Vulkan与OpenGL的对比2
1.3 重要术语4
1.4 Vulkan的原理5
1.4.1 Vulkan的执行模型5
1.4.2 Vulkan的队列6
1.4.3 对象模型7
1.4.4 对象生命周期与指令语法7
1.4.5 错误检查与验证8
1.5 理解Vulkan应用程序8
1.5.1 驱动8
1.5.2 应用程序9
1.5.3 WSI9
1.5.4 SPIR-V9
前言
Vulkan API的学习显然需要读者对计算机图形学和通用计算方面有一定的理解,然后才可以开始进行程序的开发。本书中会直接用到很多通用的概念和术语。
本书实战性很强,目的就是帮助读者学习Vulkan的思想、概念以及API标准,并且通过随书的案例来进行实践。本书中涉及大量的参考文献,读者可以从中了解到更多的相关概念,在学习和实践过程中巩固自己的基础知识。
本书内容
第1章将介绍Vulkan API的一些基础知识,并且通过与它的前身OpenGL API进行比较的方式,对Vulkan的一些核心特性进行概述。该章会涵盖Vulkan编程过程中必须了解的基础、概念、应用程序模型以及技术术语,这些对于初次接触Vulkan的学习者来说至关重要。你可以快速地概览Vulkan的编程模型,了解每一个模块的主要作用和学习要点。
第2章将帮助你用伪代码的方法编写一个简单的Hello World程序。初学者可以感受Vulkan编程的基本方法,并且逐步地学会构建第一个Vulkan应用程序。你还可以从该章中了解安装必需软件以及SDK的方法。
第3章将带你设置开发环境来构建你的第一个Vulkan案例。你可以创建一个Vulkan实例并初始化程序;还可以连接物理硬件设备,探索该设备所提供的不同队列,查询各个可用的层和扩展。该章会详细地讲解设备队列和队列族的概念,以及它与逻辑设备的关系。
第4章将介绍Vulkan应用程序中进行调试的方法。Vulkan允许我们通过验证层来进行调试。该章我们会讨论每种验证层的功能并编写一个简单的例子来实际理解调试的过程。此外,我们还会查询层的扩展属性,以便增加更多的功能。这些功能可能并非是Vulkan标准中定义的。
第5章将深入讨论和实现Vulkan中的指令缓存。读者将了解到指令池的作用,并学习如何使用Vulkann中的指令缓存进行录制。该章的后半部分会介绍Vulkan中的内存管理。你将深入理解设备内存,并学习GPU内存的分配和销毁操作,理解CPU和GPU内存之间的映射关系。
第6章将介绍图像资源的概念,并讨论相关内存管理的概念,包括图像的创建、分配、绑定和映射。我们会使用这种方法来创建一个深度图像,以便进行深度测试。该章将介绍WSI交换链,使用它来实现渲染可绘制对象并展示到屏幕的功能。我们会尝试获取交换链的颜色图像,并创建颜色视图以便用于绘制图元。
第7章将讨论缓存资源及其相关用途,即可绘制对象的几何体顶点缓存的构建。该章会详细地介绍使用渲染通道定义绘制操作的相关工作的方法,并使用多个附件和子通道。我们将使用渲染通道在Vulkan中实现帧缓存,并使用一个简单的示例演示如何清除背景颜色。在该章的结尾部分,我们将使用SPIR-V实现第一个Vulkan着色器程序。我们会学习一些SDK工具的用法,将GLSL代码转换为SPIR-V的中间语言格式。
第8章将介绍Vulkan中的计算流水线和图形流水线。该章将会对图形流水线的流程做一个概述,并且涵盖整个流程中所用到的各个模块的作用讲解。我们将讨论流水线状态对象、流水线缓冲对象,以及流水线布局。该章还包含所有流水线状态的介绍,包括动态状态、输入装配(以及图元绘制)、光栅化、融混、视口、深度/模板测试,以及多重采样。我们将使用这些状态对象来实现一个完整的图形流水线。
第9章将全面地介绍Vulkan中对象绘制的过程。我们将录制和执行绘制物体的指令缓存。录制过程中的视口和几何体数据将关联到渲染通道、帧缓存,以及流水线。指令缓存的执行过程包括将指令缓存提交到设备队列,以及将交换链图像提交给展示引擎。我们还将讨论Vulkan中的同步机制,并理解有关栅栏、信号量,以及内存屏障的知识。此外,我们还会介绍如何绘制相关的API并通过一些简单的案例演示它们的用法。
第10章将介绍Vulkan程序中对着色器资源进行更新的过程,这里用到了描述符和推送常数的概念。我们会讨论描述符池以及描述符集布局的创建过程。读者将从中学到有关流水线布局的用法,并使用描述符来更新设备内存端的缓存资源,以及将更新后的几何体渲染到屏幕上。与描述符不同的是,推送常数并不会使用指令缓存,而是使用一种更为优化的方式来更新资源。用户可以尝试实现一个简单的程序来深入理解推送常数的相关知识。
第11章将尝试使用更为真实的方法,即贴敷纹理来渲染3D可绘制对象。用户将会学习如何创建图像资源并为它设置采样器对象,还将学习使用线性和优化平铺的方式来更新纹理。在优化平铺的模式下,用户还需要考虑使用传输缓存和图像内存的指令方法。
本书的目标读者
本书适用于对跨平台、高性能的图形开发,以及桌面级和嵌入式的计算程序开发技术感兴趣的读者。读者需要对C/C++编程有较为深入的理解,同时具备一定的实际开发经验,还需要具备一些图形学和计算领域的知识和经验,以便更好地理解Vulkan中的概念。
排版约定
新的术语以及重要名词以黑体字的方式显示。
警告或者重要的提示信息会出现在这里。
媒体评论
本书将首先介绍Vulkan系统的基本原理,尝试与硬件设备进行连接并查询可用的队列、内存类型,以及提供的功能。Vulkan很冗长,所以在深入编程之前,开发者需要首先理解相关的调试技巧,这样即使是新手也可以使用Vulkan的层和扩展特性来排除一些常见错误。
通过阅读本书,你将学到:
学习Vulkan编程模型的基本知识,理解现代GPU设备的基本功能。
实现设备、指令缓存,以及队列的功能,与物理硬件设备进行连接。
了解Vulkan中的验证层概念,学习调试方法与技巧。
深入理解内存管理的知识,控制宿主机和设备端的内存操作。
理解和实现缓存与图像资源的类型。使用线性和优化类型的纹理。
定义渲染通道中的绘制操作,实现完整的图形流水线。
通过SPIR-V管理GLSL着色器,使用描述符集和推送常数来更新着色器资源。
学习绘制的过程、同步资源,并通过交换链将3D场景渲染到屏幕上。