Ahjo.Vulkan.Ngx 0.13.1-alpha.0.9

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

Ahjo.Vulkan.Ngx

NVIDIA DLSS Super Resolution and DLAA for Ahjo.Vulkan, over the raw bindings in Ahjo.Vulkan.Ngx.Native.

using Ahjo.Vulkan;
using Ahjo.Vulkan.Ngx;

var description = new NgxDescription
{
    ProjectId     = "a0f57b54-1daf-4934-90ae-c4035c19df04", // your own GUID
    EngineVersion = "1.0.0",
};

using NgxContext ngx = NgxContext.Create(device, description);

DlssOptimalSettings settings = ngx.GetOptimalSettings(3840, 2160, DlssQualityMode.MaxQuality);
if (!settings.IsAvailable) return;                      // that mode is not offered here

using var color  = NgxImage.CreateView(device, colorImage,  new ImageViewDescription { Aspect = VkImageAspectFlagBits.VK_IMAGE_ASPECT_COLOR_BIT });
// …depth, motion vectors, output the same way

using DlssFeature dlss = ngx.CreateDlss(ref setupRecorder, new DlssFeatureDescription
{
    RenderWidth  = settings.RenderWidth, RenderHeight = settings.RenderHeight,
    OutputWidth  = 3840,                 OutputHeight = 2160,
    Mode         = DlssQualityMode.MaxQuality,
    Flags        = DlssFeatureFlags.MotionVectorsLowRes | DlssFeatureFlags.DepthInverted,
});
// submit setupRecorder and WAIT before the first Evaluate — CreateDlss records init work.

dlss.Evaluate(ref recorder, new DlssEvaluateInputs
{
    Color = color, Depth = depth, MotionVectors = motionVectors, Output = output,
    JitterOffsetX = jitterX, JitterOffsetY = jitterY,
    RenderWidth = settings.RenderWidth, RenderHeight = settings.RenderHeight,
});

Evaluate allocates nothing per frame.

This package does not contain DLSS

It ships no native files at all — the ahjo_ngx shim rides in Ahjo.Vulkan.Ngx.Native, and the feature DLL is yours. nvngx_dlss.dll (Windows) and libnvidia-ngx-dlss.so.<version> (Linux) are NVIDIA's, covered by the NVIDIA RTX SDKs licence: download them from NVIDIA/DLSS (lib/<plat>/rel/, never dev/ — that build carries an on-screen watermark) and place the file beside your executable or point NgxDescription.DlssSearchPaths at it.

Without it, NgxContext.Create throws NgxFeatureLibraryNotFoundException naming the expected file and every directory searched. There is no silent fallback, and there is no software path: DLSS runs inside the NVIDIA display driver.

The full consumer contract — where to get the DLL, the NVIDIA licence obligations that land on your application, and the renderer conventions (jitter sign, motion-vector direction and space, mip bias, Reset, image layouts) that this wrapper cannot check — is docs/ngx-notes.md. samples/HelloDlaa is a worked call site for all of it.

Three contracts the wrapper holds, and one it cannot

  • The view/image/range triple cannot disagree. NgxImage.CreateView builds the view and the subresource range from one ImageViewDescription; NgxImage.Wrap borrows a view you already have and takes the description that made it. Nothing can recover a VkImageView's range after the fact, so Wrap's contract is the one thing you must get right yourself.
  • ReadWrite is not part of the API. The wrapper sets it from the slot — false for every input, true for Output — so "read-write on an image with no VK_IMAGE_USAGE_STORAGE_BIT" is not a sentence you can say. The usage bits themselves are checked under AhjoValidation.Enabled.
  • Image layout is yours. Inputs must be in a shader-read layout and the output in VK_IMAGE_LAYOUT_GENERAL before Evaluate, which must be recorded outside any BeginRendering scope. Ahjo.Vulkan deliberately does not track layout (issue #17), so the wrapper cannot check this — enable VK_LAYER_KHRONOS_validation, which does.

Give the output image ImageUsage.Storage | ImageUsage.TransferDst: DLSS binds it as a storage image and clears it itself with vkCmdClearColorImage, which needs the transfer bit. That second half is not in NVIDIA's headers — the validation layer is what says so.

Rebind after Evaluate. NGX clobbers the command buffer's bound pipeline, descriptor sets and dynamic state. CommandRecorder caches none of that, so there is nothing for the wrapper to invalidate — but you must rebind before the next draw or dispatch.

Not thread safe. The NGX API is not; neither is NgxContext. Under AhjoValidation.Enabled a re-entrancy guard says so rather than corrupting the parameter map.

Requirements

NVIDIA hardware with a DLSS-capable driver, win-x64 or linux-x64, and the feature DLL above. Ahjo.Vulkan takes no dependency on this package.

Part of Ahjo.Vulkan. MIT licensed — the NVIDIA licence obligations that come with the feature DLL are yours.

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

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.13.1-alpha.0.9 61 9/7/2026
0.13.1-alpha.0.8 64 9/4/2026
0.13.1-alpha.0.7 58 9/4/2026
0.13.1-alpha.0.6 69 9/4/2026
0.13.1-alpha.0.5 65 9/4/2026
0.13.1-alpha.0.4 57 9/4/2026
0.13.1-alpha.0.3 54 9/4/2026