Ab4d.SharpEngine
3.0.9196
dotnet add package Ab4d.SharpEngine --version 3.0.9196
NuGet\Install-Package Ab4d.SharpEngine -Version 3.0.9196
<PackageReference Include="Ab4d.SharpEngine" Version="3.0.9196" />
paket add Ab4d.SharpEngine --version 3.0.9196
#r "nuget: Ab4d.SharpEngine, 3.0.9196"
// Install Ab4d.SharpEngine as a Cake Addin #addin nuget:?package=Ab4d.SharpEngine&version=3.0.9196 // Install Ab4d.SharpEngine as a Cake Tool #tool nuget:?package=Ab4d.SharpEngine&version=3.0.9196
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 mitter or bevel connections, hidden lines
- Object instancing (InstancedMeshNode)
- Cameras: TargetPositionCamera, FirstPersonCamera, FreeCamera, MatrixCamera
- Camera controllers with rotate around mouse position, zoom to position and other advanced functions
- Lights: AmbientLight, DirectionalLight, PointLight, SpotLight, CameraLight
- Effects: StandardEffect, SolidColorEffect, VertexColorEffect, ThickLineEffect
- Improved visual quality with super-sampling and multi-sampling
- Render vector and bitmap text
- ReaderObj to read 3D models from obj 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. |
-
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.0.9196 | 219 | 3/6/2025 |
3.0.9195-rc4 | 214 | 3/5/2025 |
3.0.9175-rc3 | 169 | 2/13/2025 |
3.0.9173-rc2 | 122 | 2/11/2025 |
3.0.9169-rc1 | 152 | 2/7/2025 |
2.1.9118-beta2 | 156 | 12/19/2024 |
2.1.9028-beta1 | 183 | 9/20/2024 |
2.0.8956 | 1,153 | 7/9/2024 |
2.0.8951 | 268 | 7/4/2024 |
2.0.8941-rc2 | 210 | 6/24/2024 |
2.0.8936-rc1 | 201 | 6/19/2024 |
1.0.8740 | 1,683 | 12/7/2023 |
0.9.20-rc1 | 267 | 11/15/2023 |
0.9.18-beta6 | 238 | 10/20/2023 |
0.9.16-beta5 | 210 | 9/15/2023 |
0.9.15-beta4 | 624 | 8/23/2023 |
0.9.14-beta3 | 269 | 8/4/2023 |
0.9.13-beta3 | 1,006 | 7/11/2023 |
0.9.11-beta3 | 209 | 5/11/2023 |
0.9.10-beta3 | 140 | 5/10/2023 |
0.9.8-beta2 | 583 | 4/16/2023 |
0.9.0-beta1 | 257 | 12/14/2022 |
Ab4d.SharpEngine v3.0.9196 (major changes compared to v2.0.8956; see the changes for RC and beta versions to get the full list of changes):
- Added support for free open-source license. When this license is used, then for the first 1.2 seconds the "POWERED BY SHARP ENGINE" text and the SharpEngine logo is shown. During this period no other 3D objects are rendered. You can check if the logo is shown by checking the new SceneView.IsLicenseLogoShown property. To be informed when the logo is removed and when your 3D objects can be shown (for example to start an animation) use the SceneView.OnLicenseLogoRemoved Action. You can apply for free open-source license on https://ab4d.com/trial.
- Added support for super-sampling anti-aliasing (SSAA) that can significantly improve the quality of rendered 3D lines and 3D text. On SharpEngineSceneView control the super-sampling is defined by the SupersamplingCount property. On SceneView object, the initial multisample count and supersample count is set by calling SceneView.Initialize method. To change the MSAA and SSAA, call SceneView.Resize method. Default value for super-sampling on dedicated desktop devices is 4, on integrated desktop devices is 2, on mobile and low-end devices the default value is 1.
- Added support for hardware accelerated line caps rendering. This allows rendering of millions of lines with line caps. Also, added additional line cap types. Before only Flat and ArrowAnchor were available. Now the following new line caps are supported: WideArrowAnchor, WiderArrowAnchor, ShortArrowAnchor, StealthArrowAnchor, ReverseArrowAnchor, ReverseShortArrowAnchor, BoxAnchor, DiamondAnchor.
- Added support for rendering hidden lines - lines that are rendered only when they are behind 3D objects. This can be used to render doted or thinner hidden lines (compared to visible lines).
- Added support for async image loading and buffer upload. The following new async methods are added: TextureLoader.CreateTextureAsync, GpuImage.CopyDataToImageAsync, GpuBuffer.WriteToBufferAsync, BitmapFont.CreateAsync, BitmapTextCreator.CreateAsync, AndroidTextureLoader.CreateTextureMaterialAsync, AndroidTextureLoader.CreateTextureAsync.
- Added loadInBackground and initialDiffuseColor to StandardMaterial and SolidColorMaterial constructors that also take texture file name or texture stream as parameters. When loadInBackground is true the material is initially set to the initialDiffuseColor. When the texture is loaded, it is shown instead of the initialDiffuseColor.
- Added TrueTypeFontLoader and VectorFontFactory that can show vector text meshes and outlines from the glyph defined in TrueType font files (.ttf).
- Added new SharpEngineSceneView constructors that also take Scene as a parameter. That can be used to create a single Scene object and show it with multiple SharpEngineSceneView objects. See the new "Advanced / Multiple SceneViews" sample.
- Added BackgroundGraphicsQueue and BackgroundTransferQueue to VulkanDevice. They are created when EngineCreateOptions.EnableBackgroundResourceUpload is true (by default) and when GPU device supports more then one Graphics queue and when any Transfer queue is available. Note that when EnableBackgroundResourceUpload is true, the VulkanDevice.TransferQueue is not set (BackgroundTransferQueue is set instead).
- Added MeshTrianglesSorter that can be used to sort triangles by camera distance.
- Added support for rendering to bitmap without multi-sampling (MSAA) even if it is enabled in the SceneView. This is required to correctly render ID bitmap that can be used for hit-testing.
- Significantly improved performance of initializing multiple buffers (for example creating 1000 pyramids each with its own mesh takes now 15ms instead of 200ms). This is implemented by a new GpuStagingBuffer class that can do a batch copy of multiple buffers so we wait only once for multiple buffers copy operations.