Ab4d.SharpEngine 3.2.9364-beta

This is a prerelease version of Ab4d.SharpEngine.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Ab4d.SharpEngine --version 3.2.9364-beta
                    
NuGet\Install-Package Ab4d.SharpEngine -Version 3.2.9364-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="Ab4d.SharpEngine" Version="3.2.9364-beta" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Ab4d.SharpEngine" Version="3.2.9364-beta" />
                    
Directory.Packages.props
<PackageReference Include="Ab4d.SharpEngine" />
                    
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 Ab4d.SharpEngine --version 3.2.9364-beta
                    
#r "nuget: Ab4d.SharpEngine, 3.2.9364-beta"
                    
#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 Ab4d.SharpEngine@3.2.9364-beta
                    
#: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=Ab4d.SharpEngine&version=3.2.9364-beta&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Ab4d.SharpEngine&version=3.2.9364-beta&prerelease
                    
Install as a Cake Tool

Ab4d.SharpEngine

Ab4d.SharpEngine is a cross-platform Vulkan based 3D rendering engine for desktop and mobile .Net applications.

Vulkan is a high performance graphics and cross-platform API that is similar to DirectX 12 but can run on multiple platforms.

The following features are supported by the current version:

  • Using any coordinate system (y-up or z-up, right-handed or left-handed)
  • Many SceneNode objects (boxes, spheres, planes, cones, lines, poly-lines, curves, etc.)
  • Render line caps (arrows, etc.), line with pattern, poly-lines with miter or bevel connections, hidden lines
  • Object instancing (InstancedMeshNode) that allows rendering millions of mesh instances
  • Simple to use cameras: TargetPositionCamera, FirstPersonCamera, FreeCamera, MatrixCamera
  • Camera controllers that can rotate the camera around the mouse position, zoom to position and other advanced functions
  • Lights: AmbientLight, DirectionalLight, PointLight, SpotLight, CameraLight
  • Improved visual quality with super-sampling and multi-sampling
  • Many post-processing effects
  • Render vector and bitmap text
  • Included reader and writer for .obj and .stl files.
  • Import 3D objects from glTF files and export the scene to glTF file by using Ab4d.SharpEngine.glTF
  • Assimp importer that uses a third-party library to import 3D models from almost any file format

Samples

Ab4d.SharpEngine.Samples on GitHub

Platforms and UI frameworks:

Windows:

  • AvaloniaUI support with SharpEngineSceneView control (Ab4d.SharpEngine.AvaloniaUI library)
  • WPF full composition support with SharpEngineSceneView control (Ab4d.SharpEngine.Wpf library)
  • WinUI 3 support with SharpEngineSceneView control (Ab4d.SharpEngine.WinUI library)
  • WinForms support with SharpEngineSceneView control (Ab4d.SharpEngine.WinForms library)
  • Uno Platform
  • MAUI
  • Using SDL or Glfw (using a third-party Silk.Net library; the same project also works on Linux)
  • ImGui (using a third-party ImGui.NET library)

Linux (including Raspberry PI 4 and similar devices):

  • AvaloniaUI support with SharpEngineSceneView control (Ab4d.SharpEngine.AvaloniaUI library)
  • Uno Platform
  • Using SDL or Glfw (using third-party Silk.Net library; the same project also works on Windows)
  • Off-screen rendering combined with Linux framebuffer display (FbDev or DRM/KMS).
  • ImGui (using a third-party ImGui.NET library)
  • See "Vulkan on Raspberry Pi 4" guide on how to use SharpEngine on Raspberry Pi 4 with an external monitor.

Android:

  • Using AvaloniaUI with SharpEngineSceneView control (Ab4d.SharpEngine.AvaloniaUI library).
  • Using SurfaceView in C# Android Application
  • MAUI

macOS:

  • Using AvaloniaUI with SharpEngineSceneView control (Ab4d.SharpEngine.AvaloniaUI library). Requires MoltenVK library - see special project for macos.
  • Using MAUI - requires MoltenVK library - see Building for macOS and iOS below.

iOS:

  • AvaloniaUI with SharpEngineSceneView control (Ab4d.SharpEngine.AvaloniaUI library). Requires MoltenVK library - see Building for macOS and iOS below.
  • Using MAUI - requires MoltenVK library - see "Building for macOS and iOS" below.

Online help

Online Ab4d.SharpEngine Reference help

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  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.  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.  net8.0 is compatible.  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.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos 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.
  • net6.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages (7)

Showing the top 5 NuGet packages that depend on Ab4d.SharpEngine:

Package Downloads
Ab4d.SharpEngine.AvaloniaUI

Ab4d.SharpEngine.AvaloniaUI defines Avalonia controls that can show 3D scene rendered by Ab4d.SharpEngine rendering engine

Ab4d.SharpEngine.WinUI

Ab4d.SharpEngine.WinUI defines WinUI controls that can show 3D scene rendered by Ab4d.SharpEngine rendering engine

Ab4d.SharpEngine.Assimp

Ab4d.SharpEngine.Assimp provides classes that can use Assimp importer to import 3D objects into Ab4d.SharpEngine 3D rendering engine

Ab4d.SharpEngine.Wpf

Ab4d.SharpEngine.Wpf defines WPF controls that can show 3D scene rendered by Ab4d.SharpEngine rendering engine

Ab4d.SharpEngine.glTF

Ab4d.SharpEngine.glTF library provides a glTF 2.0 importer that can import 3D objects from glTF files to Ab4d.SharpEngine 3D objects. The library also provides a glTF exporter that can export the 3D scene created by Ab4d.SharpEngine to the glTF file.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.2.9386 136 9/12/2025
3.2.9377-beta2 153 9/2/2025
3.2.9364-beta 152 8/21/2025
3.1.9316 592 7/7/2025
3.1.9300-rc3 192 6/18/2025
3.1.9299-rc2 177 6/17/2025
3.1.9287-rc1 178 6/5/2025
3.0.9208 484 3/19/2025
3.0.9196 712 3/6/2025
3.0.9195-rc4 254 3/5/2025
3.0.9175-rc3 204 2/13/2025
3.0.9173-rc2 151 2/11/2025
3.0.9169-rc1 181 2/7/2025
2.1.9118-beta2 189 12/19/2024
2.1.9028-beta1 214 9/20/2024
2.0.8956 1,389 7/9/2024
2.0.8951 326 7/4/2024
2.0.8941-rc2 229 6/24/2024
2.0.8936-rc1 221 6/19/2024
1.0.8740 1,749 12/7/2023
0.9.20-rc1 288 11/15/2023
0.9.18-beta6 265 10/20/2023
0.9.16-beta5 235 9/15/2023
0.9.15-beta4 666 8/23/2023
0.9.14-beta3 317 8/4/2023
0.9.13-beta3 1,060 7/11/2023
0.9.11-beta3 258 5/11/2023
0.9.10-beta3 201 5/10/2023
0.9.8-beta2 639 4/16/2023
0.9.0-beta1 310 12/14/2022

Ab4d.SharpEngine v3.2.9364 beta:
- Added MeshOctTree that is by default generated for meshes with more than 512 positions. It increases the mesh initialization time but significantly improves hit testing performance and allows super-fast hit testing of meshes with millions of positions. MeshOctTree can be created manually by calling the new CreateOctTree method and then assigning it to the new OctTree property. It can also be created automatically when hit testing. This is controlled by the MeshPositionsCountForOctTreeGeneration, OctTreeMaxNodeLevel and GenerateOctTreeOnMeshInitialization properties on HitTestOptions object.
- Added IsTwoSided property to VertexColorMaterial. When it is true, then the front and the backside of the triangles are rendered with one draw call.
- Added PrimitiveIdMaterial that can be used to render each triangle of a mesh with a color that is defined by the triangle index. This can be used for super-fast triangle hit testing (checking which triangle on the mesh was hit)
- Improved Triangulator to triangulate some polygons with holes correctly. Also added FailedToFindPolygonEars property that is set to true when the triangulation failed to correctly triangulate the positions so the results may not be correct.
- Added optional sourceOffset and destinationOffset parameters to VulkanDevice.CopyBuffer method.
- Added overloads to GpuBuffer.WriteToBuffer and VulkanDevice.CreateBuffer methods that also take a data parameter as a ReadOnlySpan type and not only as a Span and an array.
- Fixed Scene.GetAllHitObjects method that in some cases returned too few hit results.
- Fixed Scene.GetAllHitObjects method that in some cases returned duplicate hit results that lie on the same triangle edge event when ReportAllHitTrianglesWhenEdgeIsHit was set to false.
- Added CreateGradientColors methods with multiple overloads to TextureFactory. They can be used to create an array of colors that define the color gradient.
- Fixed rendering SolidColorMaterial when the mesh is not using PositionNormalTextureVertex format.
- Increased the default size of the staging buffer to 1 MB. This prevents the validation warning that the staging buffer should not be allocated to a dedicated memory block.
- Added support for 3D images by adding the Depth property to GpuImage.
- Added VulkanDevice.IsLost property and VulkanDevice.DeviceLost event. The user can subscribe to this event and then recreate the Scene or SharpEngineSceneView to restore the rendering.
- Added RandomSamplesRunner to Samples.Common project. It can be used to run random samples very fast (changing samples on ApplicationIdle).
- When using SharpEngineSceneView for WPF, the DirectX 9 device that is used for sharing the texture is cached. This significantly improves the performance of creating a new SharpEngineSceneView or of showing the content of SharpEngineSceneView after its Visibility was set to Visible (from Hidden or Collapsed).
- Added DescriptorSetsCache that is used to cache Vulkan's DescriptorSets so they can be reused when the material data block with the same texture image and sampler is used.
- Wait until any background queue tasks are finished before calling vkDeviceWaitIdle. This prevents the following error: "vkDeviceWaitIdle(): THREADING ERROR : object of type VkQueue is simultaneously used in current thread 52752 and thread 43220".
- Added new constructors to HeightMapContoursNode and HeightMapWireframeNode that can be used to set more properties. This significantly improves performance because it prevents calling UpdateMesh when the properties are set after the constructor.
- Added EngineCreateOptions.EnableNamingVulkanResources property. When set to true, then naming Vulkan resources can be enabled without enabling standard validation.
- Prevented application crash that could happen when back buffer resources were disposed and quickly recreated again (for example, when SharpEngineSceneView was hidden and shown again). In this case, the new depth buffer can get the same Vulkan handle as the previous back buffer image. Because of DescriptorSet optimization, the source texture image is not reset because the Handle is the same, but this can produce a memory read fault in the fragment shader.
- Prevented possible application deadlock in an Avalonia app with Vulkan backend.

glTF:
- Added support for KHR_materials_unlit extension. When it is used, then SolidColorMaterial is used instead of StandardMaterial.
- Fixed reading data in some glTF files with Draco compression.