Vulkan Best Practice for Mobile Developers
The Vulkan Best Practice for Mobile Developers is collection of resources to help you develop optimized Vulkan applications for mobile platforms.
- Create a collection of resources that demonstrate best-practice recommendations in Vulkan
- Create tutorials that explain the implementation of best-practices and include performance analysis guides
- Create a framework that can be used as reference material and also as a sandbox for advanced experimentation with Vulkan
Disclaimer: This project covers advanced Vulkan concepts. If you are new to Vulkan here are a few links to get you started:
- Vulkan Essentials
- Vulkan Swapchains
More detailed look at swapchains, and how you might want to use them
- Render Passes
Clone the repo with submodules using the following command:
git clone --recurse-submodules https://github.com/ARM-software/vulkan_best_practice_for_mobile_developers.git cd vulkan_best_practice_for_mobile_developers
Follow build instructions for your platform below.
Tested on: Samsung Galaxy S9, Samsung Galaxy S10, Huawei Mate 20 Pro, OPPO R15
This project has some third-party dependencies, each of which may have independent licensing:
- glfw: A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
- glm: OpenGL Mathematics
- glslang: Shader front end and validator
- HWCPipe: Interface to mobile Hardware Counters
- dear imgui: Immediate Mode Graphical User Interface
- dear imgui shaders: GLSL shaders for dear imgui
- SPIRV-Cross: Parses and converts SPIR-V to other shader languages
- stb: Single-file public domain (or MIT licensed) libraries
- tinygltf: Header only C++11 tiny glTF 2.0 library
- vma: Vulkan Memory Allocator
- volk: Meta loader for Vulkan API
- vulkan: Sources for the formal documentation of the Vulkan API
This project uses the following 3D models. Each one has its own licence.
- Sponza license with the following modifications:
- All textures are converted to ASTC in .ktx format.
- Converted to gltf using Blender exporter.
Models downloaded from Morgan McGuire's Computer Graphics Archive.
Vulkan is a registered trademark of the Khronos Group Inc.
All contributions are accepted under the same LICENSE.