A low-abstraction, high-performance Vulkan API binding for JavaScript and TypeScript.
nvk is a low-level Vulkan API binding for JavaScript and TypeScript that provides direct access to Vulkan's graphics and compute capabilities. It allows developers to write high-performance GPU applications, such as real-time ray tracers and advanced rendering engines, using JavaScript/TypeScript with minimal abstraction overhead. The project solves the problem of accessing modern GPU features (like ray tracing and mesh shaders) from JavaScript, which are not fully available in WebGL/OpenGL.
JavaScript and TypeScript developers working on high-performance graphics applications, game engines, GPU compute projects, or tools requiring low-level GPU access beyond WebGL's capabilities.
Developers choose nvk for its minimal overhead, direct Vulkan API mapping, and support for cutting-edge GPU features like ray tracing and mesh shaders. It offers better performance and more control than WebGL/OpenGL while providing ergonomic improvements and TypeScript support for a smoother development experience.
Vulkan API for JavaScript/TypeScript
Hybrid bindings construct Vulkan memory entirely in JavaScript, reducing context switching and trampolining for near-native performance, as highlighted in the binding generator section.
API closely matches Vulkan's C99 style, allowing developers to directly port C/C++ tutorials and code with minimal changes, as shown in the example comparison.
Full TypeScript definitions enable type-safe development and better IDE integration, with recommendations to use strict mode for robust code.
Optional shortcuts like sType auto-filling, nested structures, and cached structures reduce boilerplate and GC pressure, improving developer experience without sacrificing control.
Requires deep understanding of Vulkan's verbose and error-prone API, with minimal hand-holding—validation checks can be disabled, but mistakes are easy without prior expertise.
Generating and compiling bindings from source involves a two-pass process, Vulkan SDK setup, and platform-specific tools, making it daunting for casual use despite pre-built binaries.
As a JavaScript Vulkan binding, it lacks the extensive community, libraries, and learning resources of established options like WebGL or C++ Vulkan, limiting support for complex projects.
[maintenance mode] A low-overhead Vulkan-like GPU API for Rust.
Safe and rich Rust wrapper around the Vulkan API
The high-speed OpenGL, OpenCL, OpenAL, OpenXR, GLFW, SDL, Vulkan, Assimp, WebGPU, and DirectX bindings library your mother warned you about.
Open-Source Vulkan C++ API
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.