The contemporary graphics landscape is daunting. Older and easier-to-learn APIs like OpenGL are being replaced by explicit APIs like Vulkan.
These newer APIs have many appealing features, like threading support and bundled state management,
but using them in practice requires complex management of memory and synchronization.
What's a developer to do?
Refresh is a middle ground between these two extremes. The API aims for the simplicity of OpenGL combined with the power of Vulkan.
Refresh supports all desktop platforms. Vulkan and D3D11 backends are complete, and Metal support is coming soon.
Refresh supports portable shaders through SPIRV-Cross, but it also allows you to provide backend-specific shader formats, so you can use any shader toolchain you like.