No description
  • Zig 92%
  • Slang 4.3%
  • C 3.4%
  • Shell 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-18 09:12:11 +02:00
docs Last Sync: 2026-08-18 09:12 (Mobile) 2026-08-18 09:12:11 +02:00
examples _ 2026-08-13 15:25:26 +02:00
screenshots added wireframe 2026-04-29 22:54:09 +02:00
scripts Last Sync: 2026-08-18 09:12 (Mobile) 2026-08-18 09:12:11 +02:00
softwarerenderer _ 2026-08-14 13:52:55 +02:00
src _ 2026-08-14 13:52:55 +02:00
.gitignore _ 2026-08-07 15:17:30 +02:00
build.zig _ 2026-08-10 15:49:32 +02:00
build.zig.zon _ 2026-08-11 12:20:52 +02:00
LICENSE _ 2026-08-07 15:17:30 +02:00
README.md _ 2026-08-07 15:17:30 +02:00
TODO.md _ 2026-08-07 15:17:30 +02:00

█▄ ▄█ ▄▀▀▄ ▀▀█▀▀ █▀▀▄ █ ▄▀▀▀ █▀▀▀ █▄  █
█ ▀ █ █▀▀█   █   █▀▀▄ █  ▀▀▄ █▀▀  █ ▀▄█
▀   ▀ ▀  ▀   ▀   ▀  ▀ ▀ ▀▀▀  ▀▀▀▀ ▀   ▀

The goal of this project is to provide a graphics playground, it is meant to be a tool for visualising ideas and to generate beautiful but also simple graphics. Target applications are visualising mathemathics, physics or engineering problems, though it is not limited to only these fields and can be used for anything graphics related. Future goals for this project is to export useful graphics in useful formats for plotting, illustrating and animation tasks

Quick Start

zig build example
/// Event loop
while (window.isOpen()) {
    window.pollEvents();

    // 2. Start the render sequence. This handles swapchain acquisition,
    // waiting on fences, and returning a ready-to-use command buffer wrapper.
    Frame* frame = core.beginFrame();
    if (!frame) continue; // Handle minimized windows or swapchain rebuilds

    // 3. User interacts with the FRAME, not the global core
    frame.beginRendering(clearColor); // Wraps VK_KHR_dynamic_rendering

    frame.bindShader(myCustomShader);
    frame.pushConstants(&myData, sizeof(myData));

    // Draw calls (direct or indirect)
    frame.drawIndirect(indirectBuffer, drawCount);

    frame.endRendering();

    // 4. Submit to GPU and present to screen
    core.endFrame(frame);
}