Hub and automation toolbox for the low-level bindings used in Evergine. This repository does not contain a binding itself: it holds the shared workflows that build, publish and maintain every binding in the fleet, and it tracks their status.
The reusable workflows and composite actions that every binding repository consumes.
# in a binding's .github/workflows/CI.yml
uses: EvergineTeam/Evergine.Bindings/.github/workflows/binding-common-ci.yml@v1| Workflow | Purpose |
|---|---|
binding-common-ci.yml |
Build the generator, regenerate the binding, pack the NuGet |
binding-simple-cd.yml |
Publish a binding whose specification is vendored in the repository |
binding-xml-cd.yml |
Download an XML registry, regenerate and publish |
Versioning. Consume the moving major tag @v1. Immutable tags (@v1.0.0) exist for pinning a specific release. Never point at a branch — a branch reference silently drifts and is exactly how a repository ends up running a different pipeline from its siblings without anyone noticing.
See CHANGELOG.md for what changed between versions.
Each binding repository declares, in a binding.yml at its root, where its upstream specification lives, how it is fetched and what it publishes. It is the single description that both the deterministic workflows and the agentic ones read.
toolbox: 1.0.0
package:
id: Evergine.Bindings.Vulkan
project: VulkanGen/Evergine.Bindings.Vulkan/Evergine.Bindings.Vulkan.csproj
upstream:
kind: http-file
language: c
sources:
- url: https://raw.githubusercontent.com/KhronosGroup/Vulkan-Docs/main/xml/vk.xml
path: KhronosRegistry/vk.xml
format: khronos-xml
generator:
project: VulkanGen/VulkanGen/VulkanGen.csproj
name: Vulkan
output: VulkanGen/Evergine.Bindings.Vulkan/Generatedupstream.kind selects the adapter that knows how to fetch that kind of source:
| Adapter | Used by | How the specification arrives |
|---|---|---|
http-file |
Vulkan, OpenXR, OpenGL | A registry file at a stable URL |
git-tree |
WebGPU, RenderDoc, MeshOptimizer, xatlas, Cesium, JoltPhysics | Headers copied from an upstream repository at a pinned tag |
git-submodule |
KTX, ImGui | A git submodule pointer |
language and format are deliberately separate. The upstream project may be written in any language while still exposing a C API: JoltPhysics and cesium-native are both C++ (language: cpp) surfaced through a C wrapper (format: c-header). The binding output is always C#.
The manifest is validated against binding.schema.json.
The following bindings are currently available in this repository:
- Binding for the Vulkan API
- Auto-generated from vk.xml file included in the KhronosRegistry folder
- Binding for the OpenXR API
- Auto-generated from xr.xml file included in the KhronosRegistry folder
- Lightweight, low-level wrapper built on top of the
wgpu-nativelibrary from Firefox - Facilitates swift development of an adapter for Evergine, allowing for rapid testing across Windows, Linux, and Mac platforms using DirectX, Vulkan, and Metal
- Binding for the OpenGL API
- Auto-generated from gl.xml file included in the KhronosRegistry folder
- Binding for OpenGL (ES1-3.0, ES2.0, GL 1.x-4.6) and OpenGL ES
- Auto-generated from renderdoc_api_header
- Thin low-level autogenerated bindings for MeshOptimizer in C#
- Auto-generated from Meshoptimizer api header
- Thin low-level autogenerated bindings for xatlas in C#
- Auto-generated from xatlas api header
- Thin low-level autogenerated bindings for Imgui in C#
- Includes c# bindings of the most popular imgui libraries as well, Imguizmo, Implot and Imnodes
- Thin low-level autogenerated bindings for KTX in C#
- Auto-generated from KTX C header
- Low-level bindings for Cesium Native in C#
- Auto-generated from the CesiumNativeC API header
- Low-level bindings for the Vuforia Engine in C#
- Auto-generated from the Vuforia Engine SDK C API
- Low-level bindings for JoltPhysics (via JoltPhysicsC) in C#
- Auto-generated from JoltPhysicsC headers using CppAst
- Low-level bindings for MuJoCo in C#
- Auto-generated from the MuJoCo public headers using CppAst
- Low-level bindings for Embree, Intel's ray tracing kernel library, in C#
- Auto-generated from the Embree 4 public headers using CppAst
- Low-level bindings for the Tracy profiler CPU client in C#
- Auto-generated from TracyC.h using CppAst
- Low-level bindings for ThorVG, a lightweight vector graphics engine that rasterises SVG, Lottie animations, text and shapes, in C#
- Generated from the ThorVG C API
This README serves as a centralized hub for all the bindings available in this repository. You can find more information about each binding by clicking on the links above.