Ab3d.DXEngine 5.2.8348

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

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

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

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.

Samples project:


Online users guide:

Online reference help:

Change log:

DXEngineSnoop (diagnostics tool):

Supported platforms:
- .NET Framework 4.0+
- .NET Core 3.1
- .NET 5.0
- .NET 6.0
- .NET 7.0

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. 
.NET Core netcoreapp3.1 is compatible. 
.NET Framework net40 is compatible.  net403 was computed.  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 (2)

Showing the top 2 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

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
7.0.8865 175 4/11/2024
6.1.8746 1,303 12/14/2023
6.0.8585 2,679 7/5/2023
5.2.8348 4,008 11/9/2022
5.1.8153 7,977 4/28/2022
5.1.8147 1,179 4/28/2022
5.0.8000 6,564 11/26/2021
4.4.7874 4,603 7/26/2021
4.4.7848 1,203 6/28/2021
4.3.7763 1,841 4/3/2021
4.3.7760 1,080 4/2/2021
4.2.7697 1,924 1/27/2021
4.2.7695 1,093 1/25/2021
4.2.7655 1,264 12/17/2020
4.1.7619 1,334 11/11/2020
4.0.7447 2,242 5/29/2020
3.3.7279 1,818 12/11/2019
3.2.7234 1,656 10/22/2019

Ab3d.DXEngine v5.2 change log:   
- Added FaceColorMaterial and FaceColorEffect that can render 3D models by specifying a different color for each face (triangle) of the model.
- All lines in MultiPolyLineVisual3D are now rendered with one draw call. This greatly improves performance when many poly-lines are rendered. (this can be disabled by setting DXScene.RenderMultiPolyLinesWithOneDrawCall to false).
- Added LineIndices array to ScreenSpaceLineMesh. When set, then the mesh will create an index buffer from the LineIndices (used to render multiple poly-lines with one draw call).
- Fixed rendering 3D lines and instanced objects when planar shadow rendering is enabled.
- Added support to create OctTree for DXEngine's SimpleMesh and GeometryMesh. This greatly improves hit-testing performance when using DXEngine's meshes.
- Automatically generate OctTree for meshes that implements IOctTreeMesh (SimpleMesh, GeometryMesh, DXMeshGeometry3D) when the number vertices (positions) in the mesh is bigger or equal to the DXScene.DXHitTestOptions.MeshPositionsCountForOctTreeGeneration. When DXScene.DXHitTestOptions.GenerateOctTreeOnMeshInitialization is true (false by default), then OctTree is automatically generated when the mesh is added to a MeshObjectNode and the number of vertices is sufficient (MeshPositionsCountForOctTreeGeneration). This was already working for DXMeshGeometry3D (generated from WPF's MeshGeometry3D) in the previous version.
- Updated OctTree in DXMeshGeometry after the mesh is updated.
- Added MeshCollider that can be used to test collision between mesh and a 3D position, Rect3D, BoundingBox or another mesh.
- Added GetClosestPosition to MeshCollider. It can be used to get the index of the vertex that is closest to the specified 3D position.
- Added CheckAllBoundingBoxCorners property to CameraDistanceSortedRenderingQueue. When set to true than transparency sorting checks all corners of the bouning box and not just the center position. This is slower but may solve some transparency sorting problems - see the new "Transparency sorting types" sample for more info.
- Added GetPositionFromVertexBuffer and GetPositionsFromVertexBuffer static methods to Ab3d.DirectX.CommonUtils. They can be used to read positions from a generic vertex buffer array (that can be an array of PositionNormalTexture, PositionNormal, PositionColor, etc.)
- Added ITriangularMesh interface that defines TrianglesCount property and GetTrianglePositions method and can be used to get triangle positions from a mesh that implements that interface.
- Improved hit testing when calling GetAllHitResults method - the new version does not return two hit results when the ray hits an edge of a triangle that is shared by another triangle. The previous version returned two hit results in such case, each result with its own TriangleIndex. Because in this case the ray passes through the object only once, the new version returns only one hit result. If you want to get both hit results (as in the previous version), set the DXScene.DXHitTestOptions.ReportAllHitTrianglesWhenEdgeIsHit to true.
- Added IMeshNode interface. It is implemented by SceneNodes that provide GetMesh method and can return a used mesh.
- Added a static AddAllMeshHitResults method to Ab3d.DirectX.HitTester class. This can be used instead of calling GetAllHitObjects and allows reusing the List of hit results (preventing generating a new List on each call of GetAllHitObjects).
- Correctly disposing of DefaultRenderSpritesRenderingStep when all sprite batches are removed before disposing of DXScene.
- When DXViewportView.Refresh is called or when DXScene.RenderScene is called with forceRender is true, then the scene is rendered even if the DXViewportView is hidden or DXScene.IsEnabled is false.
- Prevented throwing an exception when using child DXViewportView object and hit testing method was called with custom root SceneNode object.
- Improved rendering of thick lines in geometry shader so that when the aspect ratio of the view (width divided by height) is changed, the line's width direction is not changed. Also, when the line direction is changed the scale of the line pattern is preserved.
- Prevented an error that may sometimes happen when resizing DXViewportView that is using DirectXOverlay, no super-sampling, no anti-aliasing and showed many objects with multi-threading.
- Set default values of ReadZBuffer and WriteZBuffer in XRayMaterial to true.
- Added VertexCount property to MeshBase class so it is possible to get the number of vertices (positions) from any DXEngine's mesh object.
- Added DefaultSystemAdapterChanged event to DXViewportView. Users can subscribe to this event to be notified when the primary graphics card is changed (this may happen on some laptops after an external monitor is disconnected). In this case shared texture cannot be used anymore and therefore DXEngine switches to using WritableBitmap. This can be very slow. Therefore it is recommended that in this event handler the state of the 3D scene is saved, then the DXViewportView is disposed and a new DXViewportView is created (this will use the new primary graphics card and will allow using shared texture again).
- Added build for .Net 7.0