ProjectZ 2.5.1

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

⚡ Project Z 2.5

Familiar XAML. Native DirectX 12. Your UI, accelerated.

Build expressive desktop tools, creative applications, and game interfaces with a GPU-rendered scene system and a WPF-inspired programming model.

DX12 XAML Windows

Showcase · Port your UI · Get started · Technical reference

Real heirowSnap Project Z gallery with dark green styling, rounded image tiles, and native shader effects

heirowSnap, ported to Project Z: original XAML styling brought into a native DX12 scene.

A new generation of Project Z

The renderer has moved from KNI to MonoGame 3.8.5.1's native DirectX 12 backend, retaining the familiar Microsoft.Xna.Framework drawing API. This update brings the pieces needed to move a real desktop UI: resources, styles, shaders, animation, scaled input, media, and native tool windows.

New capability What you can build with it
Native DX12 renderer Hardware-rendered scenes, reusable render targets, FXAA, synchronized viewport resizing, and a build-selectable DX11 fallback.
XAML UI porting Import existing windows, named controls, resource dictionaries, and item templates into native elements. Generate VB event scaffolding from XAML.
XAML shader support GPU blur, shadows, inversion, and chromatic effects on controls and subtrees, with animatable effect properties.
XAML animations Storyboards, double/color keyframes, discrete corner-radius keyframes, easing, repeating tracks, and load/hover/click triggers.
Desktop input with scaling Mouse buttons, drag, hover, wheel, keyboard and editable text, with native client-to-render coordinate mapping and transformed hit testing.
Richer layout and styling Grid, Canvas, WrapPanel, DockPanel, UniformGrid, kinetic scrolling, independent rounded corners, gradients, masks, and resource-based styles.
Inline audio/video Video frames rendered as scene textures, synchronized audio, play/pause/seek, looping, clipping, and bounded decode size.
3D inside your UI XYZW meshes, cameras, materials, OBJ/FBX models, textures, wireframe, and custom shaders through Surface3DElement.
Desktop integration Borderless/resizable windows, DWM composition requests, shared-device tool windows, tray menus, hotkeys, notifications, and capture workflows in heirowSnap.
Creative tooling Native DX12 VST3 editor with DX11 fallback, granular synthesis, MIDI, XAML design surface, and plugin deployment tooling.

📦 Release 2.5.1: the framework package includes the DX12 scene library and internal model importer. The VST plugin, heirowSnap application, and sample projects are separate source projects.

📦 Install 2.5.1

dotnet add package ProjectZ --version 2.5.1

NuGet Publish

🔐 Dependency refresh: ProjectZ 2.5.1 references SocketJack 2026.13.1, which uses SSH.NET 2026.0.0. This replaces the vulnerable SSH.NET 2025.1.0 dependency resolved by the previous local package. Direct and transitive NuGet audit warnings block publication.

🧭 Feature guide

⚡ Native DirectX 12 · scenes and rendering

MonoGame 3.8.5.1 supplies the native DX12 backend while preserving the familiar Microsoft.Xna.Framework drawing API. Render targets, FXAA, viewport resizing, and shared-device tool windows support desktop applications and interactive scenes. Select ProjectZGraphicsBackend=DirectX11 when testing the WindowsDX fallback; the distributed package uses DX12.

🧱 XAML · resources, layout and controls

Import supported windows, named controls, resource dictionaries, and item templates into the scene graph. Grid, Canvas, WrapPanel, DockPanel, UniformGrid, scrolling, gradients, masks, and independent corner radii provide layout and styling. The separate XAML code generator produces VB named-control and event scaffolding. This is a supported XAML subset, not complete WPF compatibility.

✨ GPU effects · blur, shadow and color

Effects can apply to individual controls or subtrees. Blur, shadows, inversion, and chromatic effects integrate with XAML and animatable properties. Build tooling compiles Resources/XamlEffects.fx for the selected graphics backend. Existing WPF shader binaries are not automatically converted; consult the third-party notices for adapter licensing.

🎞️ Animation · storyboards and input triggers

Use double/color keyframes, discrete corner-radius changes, easing, repeating tracks, and load/hover/click triggers. Start a named storyboard after attaching the imported tree. Animation targets include scale, translation, and effect properties.

🖱️ Input · scaling, transformed hit testing and editing

Mouse coordinates map from native client space into render space during resizing and display scaling. Hit testing respects transforms, visibility, and clipping. Controls support mouse buttons, hover, drag, wheel routing, keyboard repeat, editable text, selection, clipboard shortcuts, and password fields. Kinetic scrolling uses bounded impulses and time-based deceleration. Touch, pen, IME, and accessibility-provider parity are not implied.

🎬 Media · inline audio and video

Video frames become scene textures with synchronized audio, play/pause/seek, looping, clipping, and bounded decode sizes. Media and capture applications may require FFmpeg and additional application configuration.

🧊 3D surfaces · meshes, cameras and models

Surface3DElement brings XYZW meshes, cameras, materials, OBJ/FBX import, textures, wireframe, and custom shaders into the UI. The NuGet package includes the internal model-import assembly and declares its public dependencies.

🪟 Desktop composition · windows and native integration

Borderless/resizable hosts and shared-device tool windows connect the scene system to desktop workflows. DWM composition requests depend on the host window and OS configuration; they do not guarantee transparent blur in every application. The heirowSnap source example demonstrates tray menus, shortcuts, notifications, and capture controls.

🎹 Creative projects · VST3, MIDI and design tools

The separate VST3 project combines granular synthesis, MIDI, a native editor, and deployment tooling. The XAML design surface and sample applications demonstrate creative workflows. Installing the framework NuGet package does not install a plugin; plugin deployment is explicit.

📸 heirowSnap showcase · an application built on Project Z

The source port demonstrates galleries, account/file/chat flows, clipboard history, capture controls, notifications, and imported theme resources. The images below show local rendering and UI; remote calling and streaming still require independent two-client validation. These application features are not bundled as a ready-to-run app in the framework package.

heirowSnap built with Project Z

The port brings an existing WPF application's linked XAML and theme resources into Project Z scenes, while native code connects account, file, chat, clipboard, and capture workflows.

Your theme, carried across

DX12 rounded corners, gradients, button states, blur, shadow, and resource styling

Native surfaces, gradient brushes, state styling, and GPU effects.

A complete desktop settings surface

heirowSnap native settings with configurable keyboard shortcuts

Project Z controls, tabs, shortcuts, and the existing settings model.

Native recording toolbar with timer, audio level, Pause, and Stop/save

Small windows share the same visual language: recording controls, notifications, settings, and tray surfaces.

  • Files and media: local/online galleries, streaming uploads, drag-and-drop, asynchronous video thumbnails, inline playback, and Recycle Bin-confirmed deletion.
  • People and conversations: presence, contact menus, chat windows, and wire-compatible SocketJack protocol models.
  • Clipboard: persistent history, search, filtering, sorting, and a configurable global shortcut.
  • Capture: screenshots, video/audio recording, pause/resume, region indicators, audio levels, and native recording controls.
  • Desktop polish: same-process settings, custom tray menus, animated notifications, and preservation of existing configuration fields.

These are real development captures of the port and its DX12 graphics probe. They illustrate rendering and local UI; remote calling and streaming require separate two-client validation. Capture provenance.

Bring your XAML

1. Keep your markup and theme

Link existing .xaml files and resource dictionaries into your app's output. heirowSnap links them directly from its original source tree, keeping the original UI files available to both applications.

2. Import the window into a scene

Inside an initialized Project Z scene:

Imports ProjectZ.Shared.Drawing.Designer
Imports ProjectZ.Shared.Drawing.UI.Input

SceneXamlParser.RegisterApplicationResources("UI\Theme.xaml")

Dim importer As New SceneXamlParser(Me)
Dim root = importer.ParseLegacyWindow("UI\MainWindow.xaml")
AddElement(root)

Dim save = importer.FindName(Of Button)("SaveButton")
If save IsNot Nothing Then
    AddHandler save.MouseLeftClick, Sub(point) SaveSettings()
End If

For Each feature In importer.UnsupportedFeatures
    System.Diagnostics.Debug.WriteLine(feature)
Next

SaveSettings() is your application handler; paths are relative to the working directory. Use ParseFile for scene markup, ParseNamedElement for a single control, or ParseItemTemplate for repeated items. RegisterFactory maps custom controls to native implementations.

3. Connect the behavior

The code generator creates named-element fields and event scaffolding for documents with x:Class, preserving code inside its designated custom-code region:

dotnet run --project "Project Z XAML Codegen" -- "MyApp\UI" "MyApp\Generated"

Keep the UI; adapt the application logic. Supported controls and styles import directly. WPF code-behind, arbitrary bindings, complex templates, and custom controls may need adapters. Review UnsupportedFeatures and generated compatibility notes. This is a supported XAML subset, not a full WPF runtime.

Style it. Shade it. Animate it.

Familiar XAML, native effects

<Border xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        Width="320" Height="100" CornerRadius="18"
        Background="#103D30" BorderBrush="#35E7C4" BorderThickness="1">
    <Border.Effect>
        <DropShadowEffect Color="#35E7C4" BlurRadius="16"
                          ShadowDepth="3" Opacity="0.65" />
    </Border.Effect>
    <TextBlock Text="Hello, native DX12" Foreground="White" />
</Border>

Application and merged dictionaries, local overrides, BasedOn styles, solid brushes, and linear/radial gradients carry your visual language across controls. Rounded surfaces support independent corner radii and antialiased edges; buttons retain normal, hover, and pressed brushes.

Effects capture subtrees into reusable GPU render targets and respect ancestor scroll clipping. Storyboards can animate blur radius, shadow depth, opacity, color, and chromatic amount. RegisterEffectAdapter extends the mappings.

The supported WPFPixelShaderLibrary inversion and linear/spastic chromatic adapters use the original shader calculations. Generic chromatic effects and WPF box blur use approximations. Arbitrary compiled WPF .ps files are not automatically converted. Shader details and licensing.

Motion stays in the markup

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid.Resources>
        <Storyboard x:Key="Reveal">
            <DoubleAnimation Storyboard.TargetName="Card"
                             Storyboard.TargetProperty="Opacity"
                             From="0" To="1" Duration="0:0:0.35" />
        </Storyboard>
    </Grid.Resources>
    <Border x:Name="Card" Width="320" Height="100"
            Background="#103D30" CornerRadius="18" />
</Grid>

After parsing and attaching the tree, call importer.BeginStoryboard("Reveal") from the scene's event/update path. Imported Loaded, MouseEnter, MouseLeave, and click triggers can also start storyboards. Keyframes, spline/easing interpolation, repeating tracks, scale/translation targets, and effect properties support richer transitions. heirowSnap notifications use imported load, hover, and click animations.

Input that follows the UI

Native mouse coordinates map into render coordinates during resizing and across monitor scale changes. Parent transforms, visibility, and clipping participate in hit testing, keeping interaction aligned with the rendered control.

  • Left/right clicks, movement, hover, dragging, and wheel routing through nested controls.
  • Keyboard press/release and repeat, editable text, selection, clipboard shortcuts, and password input.
  • Kinetic scrolling with bounded impulses, time-based deceleration, and edge stopping.
  • Native tool-window input forwarded into the shared scene renderer.

This covers desktop mouse/keyboard input; touch, pen, IME, and accessibility-provider parity are not implied.

Run it from source

Use Windows, the .NET 8 SDK, and a DX12-capable GPU/driver. Windows apps target x64 by default. Visual Studio 2022 can open Project Z.sln.

# Build the framework. Native DX12 is the default.
dotnet build "Project Z Windows.vbproj" -c Release

# Run the application demo.
dotnet run --project "Project Z Application\Project Z Application (Windows).vbproj" -c Release

# Select the DX11 migration fallback.
dotnet build "Project Z Windows.vbproj" -c Release -p:ProjectZGraphicsBackend=DirectX11

The build restores the pinned MGFXC tool and compiles XAML shaders for the selected backend. Edit Resources/XamlEffects.fx; generated binaries belong under obj.

The framework Release build also creates bin/Release/ProjectZ.2.5.1.nupkg. The project and assembly version is 2.5.1.0; NuGet normalizes the package version to 2.5.1. The package includes the internal model-import DLL and restores its public dependencies, including SocketJack, from NuGet. Local SocketJack source development is opt-in with -p:UseLocalSocketJack=true; leave this off when building a package for distribution.

Solution builds do not install the VST plugin. To explicitly build and deploy it, use dotnet build "Project Z VST/Project Z VST.csproj" -c Release -p:DeployVst3OnBuild=true.

For heirowSnap, provide the original wShare checkout. WShareRoot defaults to %USERPROFILE%\source\repos\wShare; legacy settings also references InputHelper.dll in the adjacent AI.NET output. See the project file for the expected path.

dotnet build "heirowSnap Project Z\heirowSnap Project Z.vbproj" -c Release -p:WShareRoot="C:\src\wShare"
dotnet run --project "heirowSnap Project Z\heirowSnap Project Z.vbproj" -c Release --no-build

Network workflows need a configured service/account; recording and thumbnail workflows need FFmpeg. For the published package separately: dotnet add package ProjectZ.

Explore the solution

Project / area Purpose
Project Z Windows.vbproj Scene graph, controls, layout, input, animations, XAML, and rendering.
heirowSnap Project Z Desktop port and practical integration example.
heirowSnap Protocol / heirowSnap Legacy Settings Network models and linked settings implementation.
Project Z XAML Codegen XAML-to-VB named-control and event scaffolding.
Project Z Model Import Assimp-backed model import for 3D surfaces.
Project Z VST / Project Z VST SmokeHost Granular synthesizer, native editor, and embedded-host checks.
Project Z Application UI demo and playable Tetris.
Project Z Audio / Project Z Video FX Audio analysis and reactive visuals.
Project Z Tower Defense Networked game and WPF-hosted designer.
ProjectTemplate Application starting point.

Go deeper

Contributions and reproducible issues are welcome. For rendering problems, include the backend, GPU/driver, display scaling, and a small XAML example.


Project Z · Declarative UI with a native GPU canvas.

Built with MonoGame, .NET, SocketJack, and the libraries in third-party notices. Imported WPFPixelShaderLibrary adapters include GPL-3.0 material; review the notices and bundled license before redistribution.

Product Compatible and additional computed target framework versions.
.NET net8.0-windows7.0 is compatible.  net9.0-windows 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
2.5.1 0 9/30/2026
2.5.0 0 9/30/2026
2.0.1 164 2/25/2026
1.0.6 2,244 7/2/2014
1.0.2 1,839 6/12/2014
1.0.1 1,870 6/12/2014
1.0.0 1,578 6/12/2014

Native DX12, XAML scenes, GPU effects, animation, scaled input, inline media, and 3D model import. Updates SocketJack to 2026.13.1 with SSH.NET 2026.0.0, adds dependency audit gates and NuGet Trusted Publishing.