Skip to main content

VkForge: A Vulkan User-End API Implementation Generator for Renderer Development

Project description

VkForge

VkForge (Vulkan Forge) is a Vulkan User-End API Implementation Generator written in Python. It's purpose is to quickly generate the code needed for Graphics Renderer development.

VkForge is the opposite of using a wrapper layer (like SDL_GPU or shVulkan).
Instead of abstracting Vulkan, you use the Vulkan API directly — but VkForge saves you from writing all the repetitive boilerplate by generating it for you, based on your shaders and a simple config.

VkForge does not force any design pattern — you have the same freedom as hand-written Vulkan.
By design, VkForge does not generate an entire renderer — it generates components for you to connect as you wish.

VkForge also provides a list of utility code that makes it quicker to code in Vulkan. If the utility function abstracts away something you want to control, just use the direct Vulkan function.


VkForge Source

The input for VkForge is:

  • Shaders: Provide type, location, descriptor sets, and bindings.
  • Config: Defines pipeline details and other setup.

VkForge Output

VkForge generates C99 source code for your Vulkan implementation.
Platform integration is done via SDL3. We are hoping to improve VkForge — see CONTRIBUTING.md. Feel free to contribute by using it, reporting issues, making pull requests and via othe produtive ways!


Todo

  • Add support for Renderpass and earlier versions: Currently only support Vulkan >= 1.3 and Dynamic Rendering.
  • Platform abstraction: Allow users to pass a flag vkforge --platform SDL3 with options like Raylib, GLFW, etc. VkForge will generate the code specific for the platform you want.
  • Sub-Platform abstraction: I can combined SDL3 as my main platform and then use SDL3_image, stb_image, etc to load images and so on. vkforge --platform-image SDL3_image.
  • 3D utility functions: Utility functions specific for 3D rendering
  • Extended version utility functions: Extended utility functions provide additional parameters that allow the user to pass pNext and pAllocationCallbacks.

Connections

VkForge Python Package VkForge Github


Purpose

Vulkan is extremely detailed — this is a good thing!
But it can mean tedious and repetitive coding.
VkForge solves this by letting you describe your Vulkan setup in a simple Config file.
A config is short, easy to write, and saves hours of manual work.


Closing

VkForge is free and MIT licensed — contributions are welcome!
I hope you find it useful for your projects.

VkForge is led and maintained by its benevolent leader, Alrick Grandison.

(c) 2025 Alrick Grandison, Algodal

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vkforge-0.5.1.tar.gz (44.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vkforge-0.5.1-py3-none-any.whl (47.1 kB view details)

Uploaded Python 3

File details

Details for the file vkforge-0.5.1.tar.gz.

File metadata

  • Download URL: vkforge-0.5.1.tar.gz
  • Upload date:
  • Size: 44.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for vkforge-0.5.1.tar.gz
Algorithm Hash digest
SHA256 9d5a4a56da419a0881093e4d3bf26d00a38db2e357194442fd8a12aaec7c84b9
MD5 31260de864efb1b19c6f37a2307ba3f3
BLAKE2b-256 636ff77ca29dbc33baa5d0b2317e7c57c077ea7dbeb1d3199f00ddecdf763e81

See more details on using hashes here.

File details

Details for the file vkforge-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: vkforge-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 47.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for vkforge-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 33d1f9d38a57b929f25e584a4ffc1b153256726fbab4c013b47695186765c8f8
MD5 3400cdedbc8b1a07ed0b30dfff1c263f
BLAKE2b-256 e5313921e9e0fe80f7c233f7d1392e8772f6599f0c618368592bb2ccc420e5ba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page