Ab4d.SharpEngine
3.0.9208
dotnet add package Ab4d.SharpEngine --version 3.0.9208
NuGet\Install-Package Ab4d.SharpEngine -Version 3.0.9208
<PackageReference Include="Ab4d.SharpEngine" Version="3.0.9208" />
<PackageVersion Include="Ab4d.SharpEngine" Version="3.0.9208" />
<PackageReference Include="Ab4d.SharpEngine" />
paket add Ab4d.SharpEngine --version 3.0.9208
#r "nuget: Ab4d.SharpEngine, 3.0.9208"
#addin nuget:?package=Ab4d.SharpEngine&version=3.0.9208
#tool nuget:?package=Ab4d.SharpEngine&version=3.0.9208
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.9208 | 218 | 3/19/2025 |
3.0.9196 | 382 | 3/6/2025 |
3.0.9195-rc4 | 235 | 3/5/2025 |
3.0.9175-rc3 | 175 | 2/13/2025 |
3.0.9173-rc2 | 127 | 2/11/2025 |
3.0.9169-rc1 | 158 | 2/7/2025 |
2.1.9118-beta2 | 160 | 12/19/2024 |
2.1.9028-beta1 | 190 | 9/20/2024 |
2.0.8956 | 1,221 | 7/9/2024 |
2.0.8951 | 275 | 7/4/2024 |
2.0.8941-rc2 | 211 | 6/24/2024 |
2.0.8936-rc1 | 202 | 6/19/2024 |
1.0.8740 | 1,692 | 12/7/2023 |
0.9.20-rc1 | 267 | 11/15/2023 |
0.9.18-beta6 | 238 | 10/20/2023 |
0.9.16-beta5 | 211 | 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 | 210 | 5/11/2023 |
0.9.10-beta3 | 142 | 5/10/2023 |
0.9.8-beta2 | 585 | 4/16/2023 |
0.9.0-beta1 | 259 | 12/14/2022 |
Ab4d.SharpEngine v3.0.9208 - hotfix changes compared to v3.0.9196:
- Fixed ManualInputEventsManager, where its events were not triggered when no EventsSource was registered. This bug was introduced in v3.0.9175 RC3. The IsProcessingEvents property has also been removed from ManualInputEventsManager.
- Prevented setting NaN values to the camera's position and distance when zooming in and out. This may happen when the camera's near and far planes are far apart.
- When calculating the camera's near and far planes, use the camera's MinNearPlaneDistance and MaxFarPlaneDistance when provided.
- Fixed PositionAndScaleSceneNode method in ModelUtils and TransformMesh method in MeshUtils by normalizing the normals. Before, the normals may not be normalized when scaling the object.
- Improved AndroidBitmapIO when it is used in multiple threads and prevented scaling bitmap images based on screen density. This can be disabled by setting the new PreventAndroidBitmapScale to false.
- Improved AndroidTextureLoader by adding a new optional name property to set the name of the created GpuImage. Also, the LoadTextureAsync method now takes StandardMaterialBase type as a parameter instead of StandardMaterial, so it can also be used to create a SolidColorMaterial.
- Set GpuImage.IsDataWritePostponed when image data is scheduled for background transfer.
- Added GpuDynamicMemoryBlockPool.FreeMaterialMemoryBlocks method that can be used to free the material's memory block in a custom Effect (see Ab4d.SharpEngine.Samples.Common/Advanced/FogEffect.cs DisposeMaterial method)
- VulkanDynamicDescriptorSetFactory is now public instead of internal.
- Improved TriangleMesh for Positions (Vector3[]) and PositionTexture vertex layout. Before, the VertexBufferDescription was not correctly set. Also, CalculateBoundingBox, GetPositions, GetTextureCoordinates and GetVertexDataChannels methods did not work correctly for those two vertex layouts.
- Improved SolidColorEffect to correctly render meshes with only Positions (Vector3[]) and meshes with PositionTexture vertex layout. Before, only meshes with PositionNormalTexture vertex layout were correctly rendered (this layout is also used for StandardMesh).
- Added CreateOutlinePositionsMesh and CreateOutlineStandardMesh to MeshUtils. See the new "Advanced / Mesh outlines" sample.
- Ab4d.SharpEngine, Ab4d.SharpEngine.Assimp, Ab4d.SharpEngine.glTF and Ab4d.SharpEngine.AvaloniaUI assemblies for .Net 8 and .Net 9 are now marked as IsTrimmable and IsAotCompatible (updated code to prevent AOT analyzer warnings).
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.