Ab3d.DXEngine 7.0.8881

There is a newer version of this package available.
See the version list below for details.
dotnet add package Ab3d.DXEngine --version 7.0.8881                
NuGet\Install-Package Ab3d.DXEngine -Version 7.0.8881                
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="Ab3d.DXEngine" Version="7.0.8881" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Ab3d.DXEngine --version 7.0.8881                
#r "nuget: Ab3d.DXEngine, 7.0.8881"                
#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.
// Install Ab3d.DXEngine as a Cake Addin
#addin nuget:?package=Ab3d.DXEngine&version=7.0.8881

// Install Ab3d.DXEngine as a Cake Tool
#tool nuget:?package=Ab3d.DXEngine&version=7.0.8881                


Ab3d.DXEngine is a DirectX 11 rendering engine for Desktop .Net applications. Ab3d.DXEngine is built for advanced business and scientific 3D visualization.

It uses super fast rendering techniques that can fully utilize graphics cards and provide the ultimate performance. It also supports top quality visuals with PBR materials and shadows.

Ab3d.DXEngine package is the core package of the library. Usually, the Ab3d.DXEngine.Wpf package is also used.

It is also recommended to use Ab3d.PowerToys library that greatly simplifies working with 3D graphics.

Main features

  • DirectX 11 based rendering engine with full hardware rendering support.
  • Render millions of triangles with using instancing, smart optimizations and other techniques to get extreme GPU performance.
  • Render millions of hardware accelerated 3D lines (super-smooth lines with custom thickness, line color and line pattern).
  • Render millions of characters.
  • Multi-threaded rendering that can in some cases achieve more then 4 times the performance of a single thread.
  • With DirectX command list caching almost ANY number of objects can be rendered in practically no CPU time (can be used when only camera or lights are changed).
  • Super-fast per pixel lighting and super-sampling for improved visual quality.
  • Support standard and PBR (Physically Based Rendering) materials.
  • Many post processing effects.
  • The most versatile 3D engine - the same application can run on systems from high end graphics card (full hardware acceleration) to computers without graphics card (DirectX 11 software rendering). The same application can also run on an old computers with operating systems that do not support DirectX 11 (using WPF 3D rendering).
  • The rendered 3D scene can be composed with existing WPF objects so that standard WPF controls can be added on top of the 3D scene or seen through the scene.
  • Fully managed code that works with AnyCpu (x86 or x64) build targets and can be used in C# and VB.Net. DXEngine uses SharpDX as DirectX wrapper.
  • Highly customizable: use custom shaders, rendering techniques, mesh data, etc.
  • Support for virtual reality with split-screen and anaglyph rendering.
  • Use new engine with just a few changes of the existing WPF 3D code. The engine fully supports Ab3d.PowerToys and Abd3.Reader3ds libraries.
  • Great customer support by forum or email.


Ab3d.DXEngine.Wpf.Samples on GitHub Ab3d.DXEngine.WinForms.Samples on GitHub


Ab3d.DXEngine Homepage

Online reference help

Ab3d.DXEngine Reference help

Change log

Ab3d.DXEngine change log


This version of Ab3d.DXEngine can be used as an evaluation and as a commercial version.

Evaluation usage: On the first usage of the library, a dialog to start a 60-days evaluation is shown. The evaluation version offers full functionality of the library but displays an evaluation info dialog once a day and occasionally shows a "Ab3d.DXEngine evaluation" watermark text. When the evaluation is expired, you can ask for evaluation extension or restart the evaluation period when a new version of the library is available.

You can see the prices of the library and purchase it on Ab3d.DXEngine price list

Commercial usage: In case you have purchased a license, you can get the license parameters from your User Account web page (https://www.ab4d.com/UserLogIn.aspx). Then set the parametes with adding the following code before the library is used:

Ab3d.Licensing.DXEngine.LicenseHelper.SetLicense(licenseOwner: "[CompanyName]", licenseType: "[LicenseType]", license: "[LicenseText]");

Note that the version that is distributed as NuGet package uses a different licensing mechanism then the commercial version that is distributed with a windows installer. Also the LicenseText that is used as a parameter to the SetLicense method is different then the license key used in the installer.

Supported platforms

  • .NET Framework 4.5+
  • .NET Core 3.1
  • .NET 5.0
  • .NET 6.0
  • .NET 7.0
  • .NET 8.0

See also

Ab3d.PowerToys.Wpf.Samples on GitHub

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net5.0-windows7.0 is compatible.  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.  net6.0-windows7.0 is compatible.  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.  net7.0-windows7.0 is compatible.  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.  net8.0-windows7.0 is compatible. 
.NET Core netcoreapp3.1 is compatible. 
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 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 Ab3d.DXEngine:

Package Downloads

Ab3d.DXEngine.Wpf library provides support for using Ab3d.DXEngine rendering engine in WPF applications and supports rendering WPF 3D objects with the engine.


Ab3d.DXEngine.Assimp provides importing 3D models from many 3D file formats for Ab3d.DXEngine rendering engine. It is using a native Assimp importer (https://github.com/assimp/assimp). Ab3d.DXEngine is a super fast DirectX 11 rendering engine for Desktop .Net applications. Ab3d.DXEngine is built for advanced business and scientific 3D visualization. The following objects are created: - MeshObjectNode for objects with meshes - SceneNode objects for groups of objects - SimpleMesh<PositionNormalTexture> for meshes - StandardMaterial for materials Known issues in v1.1: - Silk.NET.Assimp depends on Ultz.Native.Assimp library that should copy the native assimp library into the application's output folder. But this works only for .Net Core and .Net 5.0 project and not for .Net Framework project. See the sample for .Net framework project on https://github.com/ab4d/Ab3d.DXEngine.Assimp for more information. Github page with samples project: https://github.com/ab4d/Ab3d.DXEngine.Assimp See also: https://www.ab4d.com/DXEngine.aspx - Ab3d.DXEngine library (DirectX rendering engine) https://www.ab4d.com/PowerToys.aspx - Ab3d.PowerToys library (the ultimate 3D helper library) Supported platforms: - .NET Framework 4.6.1+ - .NET Core 3.1 - .NET 5.0


Ab3d.DXEngine.glTF library provides a glTF 2.0 importer that can import 3D objects from glTF files to Ab3d.DXEngine 3D objects.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
7.0.8959 38 7/12/2024
7.0.8881 305 5/3/2024
7.0.8865 412 4/11/2024
6.1.8746 2,329 12/14/2023
6.0.8585 3,006 7/5/2023
5.2.8348 4,048 11/9/2022
5.1.8153 7,992 4/28/2022
5.1.8147 1,182 4/28/2022
5.0.8000 6,713 11/26/2021
4.4.7874 4,625 7/26/2021
4.4.7848 1,209 6/28/2021
4.3.7763 1,852 4/3/2021
4.3.7760 1,089 4/2/2021
4.2.7697 1,935 1/27/2021
4.2.7695 1,097 1/25/2021
4.2.7655 1,269 12/17/2020
4.1.7619 1,343 11/11/2020
4.0.7447 2,259 5/29/2020
3.3.7279 1,824 12/11/2019
3.2.7234 1,665 10/22/2019

Ab3d.DXEngine v7.0.8881 change log:
- Prevented showing 3D lines that were added and removed in the same frame (removed before the lines were actually shown) and were added to a ContentVisual3D that already contain some child objects.
- Prevented NullReferenceException than may happen when multiple master DXViewportView objects are created from the same Viewport3D and when the 3D scene is changed when some DXViewportView objects are not visible (when creating one master DXViewportView object and multiple child DXViewportView objects, then this works fine).    

Ab3d.DXEngine v7.0.8865 change log:   
- Added support for rendering pixels with some transparent colors in the PixelsColors array. To support that, HasTransparentPixelColors property was added to PixelsVisual3D and HasTransparency property was added to PixelMaterial. See updated "Pixels rendering options" sample.
- Added support for rendering circular pixels instead of only rectangular pixels. IsCircularPixel property is added to PixelMaterial and PixelsVisual3D objects.
- Added support for specifying pixel size in world coordinates instead of only in screen coordinates. IsWorldSize property is added to PixelMaterial and PixelsVisual3D objects. When IsWorldSize is true and when using the perspective camera, the size of the pixel is smaller when it is farther away from the camera. When IsWorldSize is false, then pixel size is always the same regardless of the distance from the camera.
- When IsWorldSize is true, the new SetFixedUpVector and ResetFixedUpVector methods can be used. The SetFixedUpVector fixes the up vector for pixels. For example, this can be used to render trees as billboards.
- Added support for rendering texture on rendered pixels. This can be used to show millions of billboards (textures that are always oriented toward the cameras). To support that, the PixelMaterial, PixelsVisual3D and PixelEffect have new SetTexture and RemoveTexture methods.
- Added PlyPointCloudReader and PlyPointCloudWriter classes that can read and write positions with colors from and to ply files. The classes are available with full source code in the samples Common folder.
- Added support for Screen Space Ambient Occlusion (SSAO) that provides a fast real-time rendering approximation of ambient occlusion. It can be enabled by creating an instance of ScreenSpaceAmbientOcclusionRenderingProvider and then calling DXScene.InitializeShadowRendering with that instance.
- Added NormalizeValues and TransformNormalsToViewSpace properties to NormalDepthEffect. This can be used to control how the depth-normal map is rendered. This is used for SSAO.
- Show a list of post processes for RenderPostProcessingRenderingStep when using DXScene.DumpRenderingSteps.
- Because now it is possible to initialize multiple shadow rendering providers (for example VarianceShadowRenderingProvider and ScreenSpaceAmbientOcclusionRenderingProvider), there are two new methods: GetShadowRenderingProviders to get all initialized shadow rendering providers and RemoveShadowRenderingProvider to remove a shadow rendering provider.
- DXScene.ShadowRenderingProvider property is now obsolete because it is possible to initialize multiple shadow rendering providers - call GetShadowRenderingProviders method instead.
- Fixed using IsEnabled property in VarianceShadowRenderingProvider and PlanarShadowRenderingProvider - it can be used to quickly disable and enable the shadows.
- Added DXLineSelectorData that can be used for line hit testing. It is similar to LineSelectorData from Ab3d.PowerToys, but it is faster because it uses Vector3 struct instead of Point3D (uses float instead of double). It can be used when SceenSpaceLineNode is created from line positions. Note that new LineSelectorData from Ab3d.PowerToys was significantly improved in the latest version and is now much faster than before. The DXLineSelectorData is even slightly faster.
- Added IsBackFacing property to DXRayHitTestResult. It is set to true when the back-face of a triangle is hit.
- Implemented IEquatable on PositionNormalTexture, PositionNormalColor, PositionNormal, PositionTexture and PositionTextureColor structs. This significantly improves performance when comparing two structs of those types or when it is used in a dictionary as a key.
- Improved PhysicallyBasedRenderingEffect so that it can also get a OcclusionMetalnessRoughness texture map where ambient occlusion, metalness and roughness data are all combined in one texture. This is commonly used in glTF files. Also significantly simplified and improved setting up PBR materials (adding AssimpPbrHelper class - full source code is available in the Common folder in the sample project). This is demonstrated in the updated PhysicallyBasedRendering/PBRModelViewer and ModelViewer samples.
- Improved applying line depth bias when using an orthographic camera. Before, when using an orthographic camera and bigger depth bias values were used, the lines that were not in the center of the screen might be moved toward the center of the screen.
- Fixed rendering MeshObjectNode when the VertexBuffer on its Mesh object is changed so that the new Vertex buffer has a different number of positions. This also fixes setting a new positions array with a different number of positions to PixelVisual3D.
- Fixed checking images with 1 bit palette (PixelFormats = Indexed1) for transparency.
- Prevented null reference exception when calling RenderingContext.GetBackBufferChangesReport and when a back buffer is changed in BeforeRunningStep or AfterRunningStep event handler.
- Restore DepthStencilView after using RenderTextureRenderingStep.
- Fixed rendering lines when many lines are rendered by using multiple threads and after the size of the view is changed (before the lines that were rendered by background threads may have invalid line thickness).