Adamantium.Vulkan.Slang
1.0.11
Prefix Reserved
dotnet add package Adamantium.Vulkan.Slang --version 1.0.11
NuGet\Install-Package Adamantium.Vulkan.Slang -Version 1.0.11
<PackageReference Include="Adamantium.Vulkan.Slang" Version="1.0.11" />
<PackageVersion Include="Adamantium.Vulkan.Slang" Version="1.0.11" />
<PackageReference Include="Adamantium.Vulkan.Slang" />
paket add Adamantium.Vulkan.Slang --version 1.0.11
#r "nuget: Adamantium.Vulkan.Slang, 1.0.11"
#:package Adamantium.Vulkan.Slang@1.0.11
#addin nuget:?package=Adamantium.Vulkan.Slang&version=1.0.11
#tool nuget:?package=Adamantium.Vulkan.Slang&version=1.0.11
AdamantiumVulkan
C# bindings to the Vulkan API, generated from the Khronos registry, with hand-written wrappers over the generated interop so that calling Vulkan reads as C# rather than as marshalling.
The Vulkan bindings come from vk.xml and video.xml - the registry Khronos publishes as the specification's own
machine-readable form - so extensions, aliases, enum extensions and the structure chains arrive as the registry
defines them rather than as a parse of the headers happened to see them.
The other three packages have no registry to read from, so their bindings are generated from the C headers by QuantumBinding, which parses through Clang's own front end rather than a bespoke parser: macros, bitfields, anonymous unions and platform conditionals mean there what they mean to a C compiler.
These packages are what the Adamantium engine is built on, but they carry no dependency on it and can be used on their own.
Packages
| Package | What it is |
|---|---|
Adamantium.Vulkan |
The bindings themselves: structures, handles, enums and commands |
Adamantium.Vulkan.Loader |
Finds the Vulkan loader at run time and resolves its entry points |
Adamantium.Vulkan.Slang |
Bindings to the Slang shader compiler, shipping the compiler itself |
Adamantium.Vulkan.Spirv |
Bindings to SPIRV-Cross, for reading back what a compiled shader declares |
dotnet add package Adamantium.Vulkan
dotnet add package Adamantium.Vulkan.Loader
Requirements
- .NET 10 or later. The shader packages also target
netstandard2.0. - x64. The projects build for that platform only; other architectures have not been tried.
- A Vulkan driver on the machine at run time. No SDK is needed to build: the loader resolves the driver's own library, and the Slang package carries the shader compiler with it.
Why the loader is a separate package
Adamantium.Vulkan.Loader resolves Vulkan at run time instead of linking an import library at build time. An
application therefore binds to whichever Vulkan the machine actually has, and a machine without one fails with an
error you can catch rather than refusing to start.
Third-party binaries
The Slang and SPIRV-Cross packages ship compiled binaries of projects that are not ours - among them the Slang compiler (Apache-2.0 with the LLVM exception, itself carrying glslang, SPIRV-Tools, LLVM, mimalloc and lz4), SPIRV-Cross and SPIRV-Tools (Apache-2.0, Khronos). Every one of those licences is permissive, and the notices travel with the binaries in THIRD-PARTY-NOTICES.md.
Nothing here derives from the Vulkan logo or any other Khronos trademark.
Building from source
git clone https://github.com/QuantumDeveloper/AdamantiumVulkan
cd AdamantiumVulkan
dotnet build AdamantiumVulkan.sln -c Release
Regenerating the bindings is only needed when the Vulkan registry moves. Adamantium.Vulkan.Generator takes
QuantumBinding from the QuantumBinding.Generator package and the SPIR-V headers from the Vulkan SDK that
VULKAN_SDK points at. It reads vk.xml and video.xml from the current directory, so run it from its own:
cd Adamantium.Vulkan.Generator
dotnet run -c Release
Status
In use, and under active development alongside the engine that depends on it. The API follows the Vulkan registry, so it changes when the registry does.
Licence
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- QuantumBinding.Utils (>= 3.0.1)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Adamantium.Vulkan.Slang:
| Package | Downloads |
|---|---|
|
Adamantium.EffectsCompiler
Compiles Adamantium effects (.fx) to SPIR-V with the Slang compiler, along with the reflection data the engine binds them by. |
GitHub repositories
This package is not used by any popular GitHub repositories.