Zest¶
A lightweight single-header rendering library
Zest is a C11-compatible rendering library with a clean, modern API designed for multiple graphics backends. It provides a frame graph execution model, bindless descriptors, and automatic resource management - all in a single header file. Currently Vulkan is the primary backend, with DirectX, Metal, and WebGPU planned for the future.
Key Features¶
- Single Header - Just
#include <zest.h>and you're ready to go - Frame Graph System - Declarative rendering with automatic barrier insertion, pass culling, and resource management
- Bindless Descriptors - Global descriptor set with indexed access to all textures and buffers
- TLSF Memory Allocator - Efficient GPU memory management with minimal fragmentation
- Dynamic Rendering - No pre-baked render pass objects needed; render passes are configured at draw time
- Layer System - Built-in support for instanced sprites, meshes and static meshes
Requirements¶
- GPU with bindless descriptor support
- SDL2 for windowing (or any other windowing library of your choice)
- C11 compiler (also compiles as C++)
Vulkan backend: Requires Vulkan 1.2+ capable GPU
Quick Start¶
#define ZEST_IMPLEMENTATION
#define ZEST_VULKAN_IMPLEMENTATION
#include <zest.h>
int main() {
// Create window and device (one per application)
zest_window_data_t window = zest_implsdl2_CreateWindow(50, 50, 1280, 768, 0, "My App");
zest_device device = zest_implsdl2_CreateVulkanDevice(&window, false);
// Create context
zest_create_context_info_t info = zest_CreateContextInfo();
zest_context context = zest_CreateContext(device, &window, &info);
// Main loop with frame graph...
}
Documentation Sections¶
-
:material-rocket-launch: Getting Started
Installation, first application, and architecture overview
-
:material-book-open-variant: Concepts
Deep dives into Device, Context, Frame Graph, Pipelines, and more
-
:material-school: Tutorials
Step-by-step guides from basic setup to advanced rendering
-
:material-api: API Reference
Complete reference for all 500+ Zest functions
Examples¶
Zest includes 16 working examples demonstrating various features:
| Example | Description |
|---|---|
| zest-minimal-template | Bare minimum Zest application |
| zest-imgui-template | ImGui integration with docking |
| zest-compute-example | Compute shader particle simulation |
| zest-instancing | GPU instancing with multi-mesh layers |
| zest-pbr-forward | Physical-based rendering |
| zest-shadow-mapping | Shadow mapping techniques |