Adamantium.Engine.Compiler 0.1.0-alpha.5

Prefix Reserved
This is a prerelease version of Adamantium.Engine.Compiler.
dotnet add package Adamantium.Engine.Compiler --version 0.1.0-alpha.5
                    
NuGet\Install-Package Adamantium.Engine.Compiler -Version 0.1.0-alpha.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Adamantium.Engine.Compiler" Version="0.1.0-alpha.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Adamantium.Engine.Compiler" Version="0.1.0-alpha.5" />
                    
Directory.Packages.props
<PackageReference Include="Adamantium.Engine.Compiler" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Adamantium.Engine.Compiler --version 0.1.0-alpha.5
                    
#r "nuget: Adamantium.Engine.Compiler, 0.1.0-alpha.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Adamantium.Engine.Compiler@0.1.0-alpha.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Adamantium.Engine.Compiler&version=0.1.0-alpha.5&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Adamantium.Engine.Compiler&version=0.1.0-alpha.5&prerelease
                    
Install as a Cake Tool

Adamantium Engine

A graphics engine for .NET on its own Vulkan bindings: a Vulkan renderer, effects compiled to SPIR-V at build time, fonts with MSDF atlases, image codecs, 3D model import and an entity-component system. It is the foundation of Adamantium UI, where a 3D scene and the interface around it are drawn by one renderer in one process.

Alpha. Windows only for now, and the API will change between releases.

Packages

Package What it is
Adamantium.Core Disposable and named objects, observable collections, commands, events, data buffers, dependency injection, type parsing
Adamantium.Mathematics Vectors, matrices, quaternions, colors, bounding volumes, polygon triangulation and fill rules
Adamantium.Fonts TrueType, OpenType and CFF: outlines, metrics, kerning, OpenType features; MSDF glyph atlases
Adamantium.Imaging PNG and APNG, JPEG, GIF, BMP, TGA, TIFF, ICO, DDS; mipmaps, format conversion, palette quantizers
Adamantium.Graphics.Core Devices, presenters, buffers, textures, vertex layouts, meshes, the effects framework
Adamantium.Graphics The Vulkan renderer: device, swap chains, memory allocation, pipelines, effects, textures, text
Adamantium.EffectsCompiler Compiles effects (.fx) to SPIR-V with Slang, with the reflection data the engine binds them by
Adamantium.FX Built-in effects: basic, font, sprite, Forward+ lighting, full-screen quad
Adamantium.Engine.Compiler Imports 3D models: Collada, Wavefront OBJ, 3DS
Adamantium.ECS Entities and components: cameras, colliders, animation, meshes
Adamantium.Multiverse Universes, the outputs they render to, windowing platforms, input
Adamantium.Engine Forward+ rendering, scene managers, cameras, selection, editing tools
Adamantium.ProceduralGeometry Rectangles, ellipses, arcs, polygons, lines, cubes, spheres, cylinders, cones, capsules, grids
Adamantium.MVVM View models with validation, sync and async commands
Adamantium.Win32 Windows, messages, system metrics, cursors, Shell dialogs
Adamantium.MacOS Application, windows and cursors through a native app wrapper (not yet verified, see below)
Adamantium.Wayland Wayland client bindings: the protocols generated from their XML, over libwayland-client
Adamantium.DBus A D-Bus client: the session bus, method calls and signals, served objects
Adamantium.XInput XInput gamepads
Adamantium.GameInput Microsoft GameInput gamepads, with the native shim they need
Adamantium.Engine.Generators Source generator: a typed class for every .fx in the project
Adamantium.MVVM.Generators Source generator for Adamantium.MVVM: bindable properties and commands from attributes
Adamantium.Content.Build The content project: a library of assets, cooked at build and copied to every project that references it
Adamantium.Engine.Templates dotnet new templates: adamantium-content, a content project

All packages share one version and are released together.

Requirements

  • .NET 10.

  • Windows 10 or 11, x64. macOS and Linux are planned; the macOS code exists but has not been built and run recently, so it is not claimed.

  • A GPU and driver with Vulkan 1.4 and the shaderInt64, shaderDrawParameters and samplerAnisotropy features, buffer device addresses and descriptor indexing - for descriptor sets, update after bind of sampled images. Neither of the newer extensions is needed from the driver: without VK_EXT_descriptor_heap the engine binds through descriptor sets, and VK_EXT_shader_object comes with the Adamantium.Vulkan.ShaderObjectLayer package - Khronos' shader object layer - where the driver lacks it. By the vendors' driver notes:

    • NVIDIA: Turing or newer - GeForce GTX 16 and RTX 20 series and later, Quadro RTX and T series, RTX A, Ada and Blackwell.
    • AMD: RDNA or newer - Radeon RX 5000 series and later, from Adrenalin 25.1.1. The RX 5000 and RX 6000 series now get their own driver from AMD.
    • Intel: Arc and Core Ultra graphics whose driver reports Vulkan 1.4 - vulkaninfo says which.

    The engine is developed and tested on an NVIDIA Quadro RTX 4000 with NVIDIA's Vulkan developer driver, with the descriptor heap and with descriptor sets; other GPUs have not been tested.

  • No Vulkan SDK. The Slang shader compiler ships in the Adamantium.Vulkan.Slang package.

Getting started

dotnet add package Adamantium.Engine --prerelease

Adamantium.Engine brings in most of the others as dependencies. Add the input and platform packages you need beside it.

Your own effects

Every .fx file in a project becomes a class at build time, in the assembly's name and the folders the file sits in: Effects/Glow.fx in an assembly named MyApp gives MyApp.Effects.Glow, derived from Effect. The generator needs to see the files, the project's folder to find those folders, and where the Slang compiler is:

<ItemGroup>
  <PackageReference Include="Adamantium.Engine.Generators" Version="0.1.0-alpha.5" PrivateAssets="all" />
  <PackageReference Include="Adamantium.Vulkan.Slang" Version="1.1.0" GeneratePathProperty="true" PrivateAssets="all" />
  <AdditionalFiles Include="**\*.fx;**\*.fxh" />
  <CompilerVisibleProperty Include="ProjectDir;AdamantiumSlangPath" />
</ItemGroup>

<PropertyGroup>
  <AdamantiumSlangPath>$(PKGAdamantium_Vulkan_Slang)</AdamantiumSlangPath>
</PropertyGroup>

A shader that does not compile fails the build with the compiler's message.

Your own content

Assets live in a content project of their own, as in XNA: a library whose files are its assets. Every project that references it, directly or through another, gets them in its output.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Adamantium.Content.Build" Version="0.1.0-alpha.5" />
  </ItemGroup>
</Project>
  • What is content. Every file of the project but its code, its build files and hidden files. Leave one out with <AdamantiumContent Remove="..." />; bring one in from elsewhere with <AdamantiumContent Include="..\Shared\logo.png" Link="Textures\logo.png" />.
  • The build. A model (Collada, OBJ, 3DS, glTF) is imported into the engine's own format beside its source - Ship.dae.aemf beside Ship.dae - when it has none yet, or its source or its settings changed; that file goes to the output, the source does not. A new engine never rewrites them on its own. The rest is copied as it is. Only what changed is built again.
  • Where it goes. To Content/{Name}/ of the application's folder, where {Name} is the last segment of the project's name (MyGame.ShipContent gives ShipContent), or AdamantiumContentName. Two content projects an application references need different names.
  • Finding it. The class {Name}Assets has a constant for each asset: its path from the application's folder, a model's being its source's path. The universe's AssetService loads by it, taking the .aemf when there is one:
var scene = await universe.Assets.LoadAsync<SceneData>(ShipContentAssets.Models.Ship.Ship_dae);

dotnet new adamantium-content (from Adamantium.Engine.Templates) creates such a project; Rider and Visual Studio list it in New Project.

Building from source

git clone https://github.com/AdamantiumStudio/AdamantiumEngine.git
cd AdamantiumEngine
dotnet build AdamantiumEngine.sln -c Debug

Everything the build needs comes from nuget.org. The tests are in AdamantiumEngine.Tests.sln; Adamantium.Engine.GraphicsTests needs a Vulkan device that meets the requirements above.

License

Apache-2.0. Parts of the engine are derived from third-party work under MIT and ISC; their notices are in the file headers and in THIRD-PARTY-NOTICES.md.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Adamantium.Engine.Compiler:

Package Downloads
Adamantium.Graphics

The Vulkan renderer of the Adamantium engine: graphics device, swap chains, memory allocation, pipelines, effects, textures and text.

Adamantium.Multiverse

Hosting layer of the Adamantium engine: universes, the outputs they render to, windowing platforms and input.

Adamantium.Engine

Rendering and entity services of the Adamantium engine: Forward+ rendering, scene managers, cameras, selection and editing tools.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-alpha.5 99 11/3/2026
0.1.0-alpha.4 149 10/2/2026
0.1.0-alpha.3 96 10/2/2026
0.1.0-alpha.2 90 10/1/2026
0.1.0-alpha 103 10/1/2026