Ab4d.SharpEngine 3.0.9208

dotnet add package Ab4d.SharpEngine --version 3.0.9208
                    
NuGet\Install-Package Ab4d.SharpEngine -Version 3.0.9208
                    
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.0.9208" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Ab4d.SharpEngine" Version="3.0.9208" />
                    
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.0.9208
                    
#r "nuget: Ab4d.SharpEngine, 3.0.9208"
                    
#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.
#addin nuget:?package=Ab4d.SharpEngine&version=3.0.9208
                    
Install Ab4d.SharpEngine as a Cake Addin
#tool nuget:?package=Ab4d.SharpEngine&version=3.0.9208
                    
Install Ab4d.SharpEngine 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 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

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. 
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.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.