V0.02.1
The Vulkan Abstraction Library is an experimental abstraction layer written atop the Vulkan Graphics API written almost exclusively in C++. It was built to simplify the process of developing and maintaining Vulkan programs while still keeping most of the functionality and performance that Vulkan provides.
VAL/Tests contains several basic examples of the features provided by VAL, including but not limited to:
- Graphics Pipelines
- Compute Pipelines
- Subpasses
- Render Targets
- Push Constants
- Image Samplers (Combined, Immutable, Standalone), Image Views, Images
- Mipmapping & Anisotropy
- Depth Buffering
- Instancing
- Dynamic States (SCISSOR, VIEWPORT, LINE_WIDTH, DEPTH BIAS, DEPTH_BOUNDS, BLEND_CONSTANTS, CULL_MODE, TOPOLOGY)
- SSBOS
- UBOS
- Array bindings
- Utilities for loading .obj meshes
- Specialization Constants
- Push Descriptors
Compiling VAL is rather straighforward; included is a python script to install all external dependencies (except for the Vulkan SDK, the instructions to install this are given in the dependency installer)
VAL\TOOLS> py installDeps.py
VAL builds to a linked library titled "VAL.lib" located in your configuration directory. For example, if you're building for x64 and debug, the VAL .lib will be located under "VAL/x64/Debug"
The Vulkan Abstraction Library is in a relatively early stage of development and help is greatly appreciated. To get started with development, refer to VAL/notes/to-do.txt and the issues page.
The Vulkan Abstraction Library is missing the following features:
- Proper Queue Ownership Transfer
- Proper optimization for Semaphore wait stages
- Raytracing support
- Multi-threaded rendering
- SSBO & UBO array binding
- Externally Sourced Buffers
- Pipeline disk caching
- Dynamic Rendering