Ab3d.DXEngine 5.2.8332-beta

.NET 5.0 .NET Core 3.1 .NET Framework 4.0
This is a prerelease version of Ab3d.DXEngine.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Ab3d.DXEngine --version 5.2.8332-beta
NuGet\Install-Package Ab3d.DXEngine -Version 5.2.8332-beta
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.8332-beta" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Ab3d.DXEngine --version 5.2.8332-beta
#r "nuget: Ab3d.DXEngine, 5.2.8332-beta"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. 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.8332-beta&prerelease

// Install Ab3d.DXEngine as a Cake Tool
#tool nuget:?package=Ab3d.DXEngine&version=5.2.8332-beta&prerelease

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

Product Versions
.NET net5.0 net5.0-windows net5.0-windows7.0 net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net6.0-windows7.0 net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows
.NET Core netcoreapp3.1
.NET Framework net40 net403 net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48 net481
Compatible target framework(s)
Additional computed target framework(s)
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
5.2.8348 902 11/9/2022
5.2.8332-beta 68 10/25/2022
5.1.8153 3,128 4/28/2022
5.1.8147 382 4/28/2022
5.0.8000 4,870 11/26/2021
4.4.7874 2,215 7/26/2021
4.4.7848 426 6/28/2021
4.3.7763 1,183 4/3/2021
4.3.7760 384 4/2/2021
4.2.7730-beta 854 3/2/2021
4.2.7697 1,147 1/27/2021
4.2.7695 377 1/25/2021
4.2.7655 580 12/17/2020
4.1.7619 606 11/11/2020
4.0.7447 1,485 5/29/2020
3.3.7279 1,057 12/11/2019
3.2.7234 775 10/22/2019

Ab3d.DXEngine v5.2 beta 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).