Technical requirements
You will need a GPU that supports at least Vulkan 1.1. At the time of writing, Vulkan 1.3 had just been announced and many vendors, such as AMD and Nvidia, have provided day-one support. We have kept the lower requirements to allow as many people as possible to follow along.
Some of the later chapters will make use of hardware features that might not be available on some of the older graphics cards. Wherever possible, we will provide an alternative software solution. If it’s not feasible, we try to focus more on the generic aspects of the implementation and less on the API details.
The complete code for this chapter is available on GitHub at https://github.com/PacktPublishing/Mastering-Graphics-Programming-with-Vulkan/tree/main/source/chapter1.
Windows
The code has been tested on Windows with Visual Studio 2019 16.11 and the Vulkan SDK version 1.2.198.1 (this might change as we write the book).
To install the Vulkan SDK on Windows, you will need to download and run the following executable:
https://sdk.lunarg.com/sdk/download/1.2.198.1/windows/VulkanSDK-1.2.198.1-Installer.exe
After installing the Vulkan SDK, make sure you can run the vulkaninfoSDK.exe
program in the Bin
folder to confirm that the SDK has been installed correctly and that your graphics drivers support Vulkan.
Please check the official documentation (https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html) should you need further details on the installation process.
We have provided a Visual Studio solution that contains the full code for the book and that allows you to easily build the executable for each chapter.
Once the solution has been built, set the Chapter1
project as the run target and run the program. Here’s what you should be seeing:
Figure 1.1 – The rendering result
Linux
For Linux, we have used Visual Studio Code, GCC 9 or above, and CMake 3.22.1. The version of the Vulkan SDK matches the one on Windows. We tested both on Debian 11 and Ubuntu 20.04.
We have used CMake to support different build systems, but we have only tested with Makefile.
To install the Vulkan SDK, you will need to download this file: https://sdk.lunarg.com/sdk/download/1.2.198.1/linux/vulkansdk-linux-x86_64-1.2.198.1.tar.gz.
Assuming you have downloaded it in the ~/Downloads
folder, extract the package by running the following command:
$ tar -xvf vulkansdk-linux-x86_64-1.2.198.1.tar.gz
This will create the 1.2.198.1
top-level folder.
There are two options to make the SDK available to build the code:
- You can add the following environment variables to your
~/.bashrc
file (or the main configuration file of your shell if you are not using Bash). Please note that you might have to create this file:export VULKAN_SDK=~/vulkan/1.2.198.1/x86_64
export PATH=$VULKAN_SDK/bin:$PATH
export LD_LIBRARY_PATH=$VULKAN_SDK/lib:
$LD_LIBRARY_PATH
export VK_LAYER_PATH=$VULKAN_SDK/etc/vulkan/
explicit_layer.d
- The other option is to add the following to your
~/.
bashrc
file:source ~/Downloads/1.2.198.1/setup-env.sh
After you have edited the ~/.bashrc
file, restart your Terminal. You should now be able to run vulkaninfo
. If that’s not the case, try to follow the previous steps again. Please refer to the official LunarG guide (https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html) should you need more details on the installation process.
To generate the build files, you need to run the following command:
$ cmake -B build -DCMAKE_BUILD_TYPE=Debug
If you’d like to create a release build, run the following command:
$ cmake -B build -DCMAKE_BUILD_TYPE=Release
This will create the build files in the build
folder. You can, of course, use a different name for the folder.
To build the code for this chapter, run the following command:
$ cmake --build build --target chapter1 -- -j 4
The number after -j
tells the compiler how many threads to use to compile the code in parallel. The recommended value is to use the number of cores your processor has.
After the build has completed, the Chapter1
executable has been created and is ready to run!
Note
Both Windows and Linux builds have been tested throughout the writing of the book by our technical reviewers and beta readers, but some issues might have gone unnoticed. If you have questions or if you would like to report an issue, please open a GitHub issue or reach out to us on Twitter: @marco_castorina
and @GabrielSassone
.
macOS
Vulkan is not natively available on macOS but is provided through a translation layer into Metal, the graphics API developed by Apple. This translation layer is provided by the Vulkan SDK with the MoltenVK library.
Because of this indirection, not all features and extensions are available on macOS. Given that we are going to make use of some advanced features such as ray tracing in this book, we didn’t want to provide a partially working version of our code for macOS. For the time being, this platform is not supported.