Designing a modern high-level graphics API

The introduction of Vulkan, a low-level graphics API, in 2016 has presented an opportunity for developers to leverage the rendering and compute capabilities of modern graphics cards in a high performance, cross-platform manner. However, its use comes at significantly higher development costs compared to its high-level predecessor, OpenGL. This thesis presents an interface which aims to reduce those costs while maintaining the advantages of Vulkan, striking a balance in the level of abstraction it exposes. Building upon Vulkan to send commands to the graphics device, its goal is to allow the user to express intent without superfluous details and yet not stand in the way between the code and the hardware when high performance and control are needed. This interface has been designed, implemented and evaluated against both OpenGL and Vulkan in terms of performance, memory use and verbosity of code.