All projects

work

VRI

In development

Purpose
Give graphics applications a common explicit rendering interface across multiple backends.
My contribution
I develop the C ABI, header-only C++23 wrapper and backend implementations, with capability queries for optional features.
Outcome
Browser examples are available, and Lazy-100 uses VRI. Backend feature coverage is documented in the capability matrix and remains in development.
On this page

Vulkan path tracer rendering the FlightHelmet glTF model at 128 samples and four bounces.

Try it in your browser

Start with the WebGPU path tracer: it loads the FlightHelmet glTF model and progressively accumulates samples. Adjust the camera orbit, sample target, bounce count and lighting to see the renderer respond. On WebGPU, traversal uses a software BVH in compute shaders.

The example gallery offers separate WebGPU and WebGL 2 launch buttons. For a lighter WebGL 2 example, try the textured cube. Optional capabilities vary by backend: the WebGL 2 path-tracer entry runs a reduced fallback, rather than the WebGPU path-tracing implementation. The cover image above was rendered with the native Vulkan backend.

What I built

VRI provides an explicit rendering API with command buffers, descriptor sets and synchronization. Applications can query optional capabilities and receive diagnostics from VRI and the native backend.

The C ABI is paired with a header-only C++23 wrapper. Shaders are authored in Slang and compiled for each target. Backends cover Vulkan, Direct3D 12, Metal, WebGPU, OpenGL, OpenGL ES and WebGL 2; feature availability varies by backend. Software Vulkan implementations can also run the Vulkan path without a hardware GPU.

Lazy-100 uses VRI. VRI-Framework supplies reusable higher-level rendering capabilities, while the current libvultra development branch builds directly on VRI.

The repository’s capability matrix records native, emulated, planned and unavailable features.

Find something

Search projects, research, and writing. Esc to close.