Ab4d.SharpEngine
3.2.9364-beta
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
<PackageReference Include="Ab4d.SharpEngine" Version="3.2.9364-beta" />
<PackageVersion Include="Ab4d.SharpEngine" Version="3.2.9364-beta" />
<PackageReference Include="Ab4d.SharpEngine" />
paket add Ab4d.SharpEngine --version 3.2.9364-beta
#r "nuget: Ab4d.SharpEngine, 3.2.9364-beta"
#:package Ab4d.SharpEngine@3.2.9364-beta
#addin nuget:?package=Ab4d.SharpEngine&version=3.2.9364-beta&prerelease
#tool nuget:?package=Ab4d.SharpEngine&version=3.2.9364-beta&prerelease
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
Product | Versions 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. |
-
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.