DenOfIzGraphics.Blazor 0.10.5-alpha

This is a prerelease version of DenOfIzGraphics.Blazor.
dotnet add package DenOfIzGraphics.Blazor --version 0.10.5-alpha
                    
NuGet\Install-Package DenOfIzGraphics.Blazor -Version 0.10.5-alpha
                    
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="DenOfIzGraphics.Blazor" Version="0.10.5-alpha" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DenOfIzGraphics.Blazor" Version="0.10.5-alpha" />
                    
Directory.Packages.props
<PackageReference Include="DenOfIzGraphics.Blazor" />
                    
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 DenOfIzGraphics.Blazor --version 0.10.5-alpha
                    
#r "nuget: DenOfIzGraphics.Blazor, 0.10.5-alpha"
                    
#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 DenOfIzGraphics.Blazor@0.10.5-alpha
                    
#: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=DenOfIzGraphics.Blazor&version=0.10.5-alpha&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=DenOfIzGraphics.Blazor&version=0.10.5-alpha&prerelease
                    
Install as a Cake Tool

DenOfIz Graphics Library

⚠️ ALPHA SOFTWARE: DenOfIz is currently in alpha stage. The API is subject to change, and the library may(will definitely) contain bugs or missing features. You may or may not know why your code just crashed. I still do hope you use and contribute to the library though!

DenOfIz is a modern, cross-platform graphics library that provides an abstraction layer over multiple graphics APIs including DirectX12, Vulkan, and Metal. It focuses on modern rendering features and binding methods. No setUniforms or large state machines.

The API style should be familiar to anyone who used Vulkan or DirectX12, large inputs are passed via input structs, and CommandList recording is very similar in all backends.

Why:

There are many great libraries that do what I attempt to do here, but I felt like they didn't quite satisfy what I wanted:

  • Build system, DenOfIz uses CMake + vcpkg.json, and provides ready-made presets for all targeted platforms.
  • I wanted a single widely used shading language: HLSL
  • Designed with interoperability in mind

Features

  • Supported Backends:
    • DirectX12 (Windows)
    • Vulkan (Windows, Linux)
    • Metal (macOS, arm64 only for now)
  • Language Bindings:
    • Native C++ API
  • Modern Rendering Features:
    • HLSL on all backends (DirectX12, Vulkan, Metal)
    • Modern resource binding
    • Compute pipelines
    • Ray tracing support
    • Mesh shaders
  • Asset Management:
    • Custom asset serialization/deserialization to optimize runtime loading
    • Model loading (via Assimp)
    • Texture loading
    • Animation Support using ozz-animation
  • Font Rendering:
    • Freetype font rendering freetype
    • HarfBuzz for text layout harfbuzz
    • Multi-channel signed distance field (MSDF) support using msdfgen
  • Windowing & Input:
    • Wrapped SDL2 Input & window management

Example Projects

DenOfIz includes several example projects demonstrating various aspects of the library, these are very crude for now but do try to sink your teeth in.

Shaders are pretty hard to read as they are ported from all over, I'll probably work on it at some point

  • SimpleTriangle: Basic rendering
  • RenderTarget: Offscreen rendering
  • TextRendering: Font loading and rendering
  • RayTracedTriangle: Basic ray tracing(This is a port from DX12Samples)
  • RayTracedProceduralGeometry: Advanced ray tracing(This is a port from DX12Samples)
  • AnimatedFox: Model loading and animation, uses ozz-animation
  • MeshShaderGrass: Using mesh shaders, not quite functional
  • RootConstants: Demostrates use of push constants, not really a big deal

Building the Library

Build instructions for all supported platforms: How to Build.

Getting Started

Quick introduction on how to get up and running: Getting Started.

Documentation(WIP)

Roadmap:

There are some features missing in DenOfIz surely, and while we want to make sure the scope of this project remains to rendering api abstraction there are some things we would like to yet implement:

Near future:
  • Command list query interface
  • Command list debug interface
  • Pipeline caching
Soon™:
  • Java bindings
  • WebGPU support, not yet clear how
  • Some fallback for Intel MacBooks, not sure how OpenGL fares with HLSL
  • Mobile Support
  • arm64 support for Windows and Linux

License

DenOfIz is licensed under the GNU General Public License v3.0. See the LICENSE file for details.

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

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.10.5-alpha 68 8/30/2026
0.10.4-alpha 75 8/30/2026
0.10.3-alpha 61 8/30/2026
0.10.2-alpha 56 8/30/2026
0.10.1-alpha 67 8/29/2026
0.10.0-alpha 58 8/29/2026
0.9.0-alpha 108 3/2/2026
0.8.9-alpha 79 3/2/2026
0.8.7-alpha 90 2/28/2026
0.8.6-alpha 82 2/18/2026
0.8.5-alpha 81 2/17/2026
0.8.4-alpha 85 2/14/2026
0.8.3-alpha 88 2/12/2026
0.8.2-alpha 77 2/10/2026
0.8.1-alpha 79 2/10/2026
0.8.0-alpha 86 2/4/2026
0.7.9-alpha 94 1/30/2026
0.7.8-alpha 95 1/29/2026
0.7.7-alpha 100 1/29/2026
0.7.6-alpha 87 1/29/2026
Loading failed