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
<PackageReference Include="Ab3d.DXEngine" Version="5.2.8332-beta" />
paket add Ab3d.DXEngine --version 5.2.8332-beta
#r "nuget: Ab3d.DXEngine, 5.2.8332-beta"
// 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.
Online users guide:
Online reference help:
DXEngineSnoop (diagnostics tool):
- .NET Framework 4.0+
- .NET Core 3.1
- .NET 5.0
- .NET 6.0
|.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 Framework||net40 net403 net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48 net481|
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Ab3d.DXEngine:
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
This package is not used by any popular GitHub repositories.
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).