Skip to content

Latest commit

 

History

97 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Evergine Bindings

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.

Toolbox

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.

The binding.yml manifest

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/Generated

upstream.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.

Current Bindings

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

CI CD Nuget

  • Binding for the OpenXR API
  • Auto-generated from xr.xml file included in the KhronosRegistry folder

CI CD Nuget

  • Lightweight, low-level wrapper built on top of the wgpu-native library 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

CI CD WebGPU Nuget

  • Binding for the OpenGL API
  • Auto-generated from gl.xml file included in the KhronosRegistry folder

CI CD Nuget

  • Binding for OpenGL (ES1-3.0, ES2.0, GL 1.x-4.6) and OpenGL ES
  • Auto-generated from renderdoc_api_header

CI CD Nuget

CI CD Nuget

  • Thin low-level autogenerated bindings for xatlas in C#
  • Auto-generated from xatlas api header

CI CD Nuget

  • Thin low-level autogenerated bindings for Imgui in C#
  • Includes c# bindings of the most popular imgui libraries as well, Imguizmo, Implot and Imnodes

CI CD Nuget

  • Thin low-level autogenerated bindings for KTX in C#
  • Auto-generated from KTX C header

CI CD Nuget

  • Low-level bindings for Cesium Native in C#
  • Auto-generated from the CesiumNativeC API header

CI CD Nuget

  • Low-level bindings for the Vuforia Engine in C#
  • Auto-generated from the Vuforia Engine SDK C API

CI CD Nuget

  • Low-level bindings for JoltPhysics (via JoltPhysicsC) in C#
  • Auto-generated from JoltPhysicsC headers using CppAst

CI CD Nuget

  • Low-level bindings for MuJoCo in C#
  • Auto-generated from the MuJoCo public headers using CppAst

CI CD Nuget

  • Low-level bindings for Embree, Intel's ray tracing kernel library, in C#
  • Auto-generated from the Embree 4 public headers using CppAst

CI CD Nuget

  • Low-level bindings for the Tracy profiler CPU client in C#
  • Auto-generated from TracyC.h using CppAst

CI CD Nuget

  • 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

CI CD Nuget

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.

About

This repository contains all the low level bindings maintained by the Evergine Team.

Topics

Resources

Stars

4 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages