Download List

Project Description

VPP is a high-level C++ rendering and GPU computation API based on Vulkan.

Vulkan is the new API for 3D graphics rendering and GPU computation developed by Khronos Group.

VPP adds high-level, object-oriented C++ interface over Vulkan. The goal is to make Vulkan programming easier and more intuitive.

VPP provides the following features:

- Intuitive, object-oriented abstractions over Vulkan concepts: devices, queues, render passes, pipelines, shader resources, synchronization objects and others.

- Isolation from the C-style interface of Vulkan.

- Easy, conceptual design of render passes and pipelines.

- Unique ability to write all shader code directly in C++ (as class methods), without any need to use GLSL or other intermediate language. No separate compiler passes required. Any C++ 14 compliant compiler should work. No compiler extensions required. No hardware vendor or OS dependencies. All types of shaders supported.

- C++ shaders are automatically integrated into a pipeline and can access shader resources in straghtforward, object-oriented manner. Bindings and locations are automatically generated. Entire Vulkan shader interface is supported. Shaders may easily access: vertex inputs, uniform buffers, all kinds of image resources, attachments, push constants, builtin variables, inter-shader communication variables.

- C++ shaders can be subject to advanced C++ programming and design techniques: parametrization, templating, macros, modularization, OO design.

- Support for multithreading and automatic host synchronization of objects where Vulkan requires it.

- Compile-time detection of some Vulkan usage errors.

- Integration with third party libraries (currently GLM).

Current project status: pre-beta. All core features implemented. However, currently tested only on Windows/Visual Studio platform (CL and clang compilers). Other compilers and Linux / Android platform support in plans.

System Requirements

System requirement is not defined

Released at 2019-04-01 19:13
vpp vpp-0.8.1 (1 files Hide)

Release Notes

Release 0.8.1:
- Vulkan 1.1 support.
- Ability to target specific Vulkan version.
- Added a library of workgroup-scoped algorithms for compute shaders: Fill, Generate, Transform, Copy, Load, Store, Reduce,
InclusiveScan, ExclusiveScan, Sort, LowerBound, UpperBound.
- Improved API for specifying barriers. Added BarrierList class.
- Improved API for declaring shared variables. Replaced Shared() specifier with separate shared variable types.
- Improved API for declaring arrays. Array sizes are now runtime C++ variables instead of template arguments.
- Shared arrays can be now 1, 2 or 3-dimensional.
- Local variables and arrays are now scope-limited and automatically reused.
- Better control of allocation in shared memory block.
- Added support for 64-bit integer types (signed and unsigned).
- Added new system for selection of device features and extensions.
- New, more flexible instance creation API.
- Incorporated extension for 64-bit atomic operations into the API.
- More tests.
- Many bug fixes.


No Changelogs