• v0.15.0 81d4344bdc

    v0.15.0
    Some checks failed
    commit-lint / conventional-commits (push) Waiting to run
    docs / build-and-deploy (push) Waiting to run
    bootstrap / cfree-fixpoint (push) Successful in 41s
    ci / build-and-test (push) Has been cancelled
    release / publish (push) Successful in 3m16s
    Pre-release

    orkun released this 2026-09-15 08:55:37 +02:00 | 920 commits to main since this release

    v0.15.0 — 2026-09-15

    Features

    • Vulkan for Ludic, and the start of a second renderer beside OpenGL.

      • Vk.*: every command of Vulkan 1.0-1.4 and of the extensions a modern renderer is
        built around (swapchain, HDR colour spaces, ray query and acceleration structures, opacity
        micromaps, mesh shaders, variable rate shading, memory budget, pipeline libraries, NVIDIA
        low latency, portability for MoltenVK), with every constant and every struct's size
        (<Struct>_sizeof) and field offsets (<Struct>_<field>). Generated from the Vulkan
        registry by ludic-dev vkgen into runtime/native/vk_api.ludic and vk_thunks.ll;
        structs are plain memory filled by name with Vk.put_i32 / put_i64 / put_ptr. Every
        size and offset was checked against the SDK's C headers (3128 facts). A C float is float
        bits in an int; 64-bit values and non-dispatchable handles are long.
      • The loader is opened at run time, never linked: vk_win.ll (vulkan-1.dll) and
        vk_mac.ll (libvulkan.1.dylib, MoltenVK). Vk.open() returning 0 means no Vulkan, and
        the program carries on. ludicc and ludic build link both files for any program that
        uses Vk.*.
      • examples/rendering/vk_probe.ludic reports what a machine's Vulkan can do;
        vk_compute.ludic runs a Slang compute shader (vk_compute.slang) and reads the picture
        back - on an RTX 3070 Ti and on an M4 Pro through MoltenVK, clean under the validation layer.
      • render3d gpu.ludic: the seam between the renderer and a graphics API. Render state
        and uniforms go through gpu_* / u_* and nowhere else (OpenGL frames unchanged);
        R3D_GFX=gl|vk or gpu_request chooses a backend, falling back to OpenGL with a reason;
        gpu_caps_probe() detects, on Windows, the Vulkan 1.3 floor, ray tracing, mesh shaders,
        the NVIDIA RTX generation, Reflex and HDR, for a settings screen to grey out what a machine
        cannot use (R3D_CAPS=rtx50|rtx40|rtx30|amd|intel|none pretends, for tests).
    Downloads