Ab4d.SharpEngine
4.1.9680
dotnet add package Ab4d.SharpEngine --version 4.1.9680
NuGet\Install-Package Ab4d.SharpEngine -Version 4.1.9680
<PackageReference Include="Ab4d.SharpEngine" Version="4.1.9680" />
<PackageVersion Include="Ab4d.SharpEngine" Version="4.1.9680" />
<PackageReference Include="Ab4d.SharpEngine" />
paket add Ab4d.SharpEngine --version 4.1.9680
#r "nuget: Ab4d.SharpEngine, 4.1.9680"
#:package Ab4d.SharpEngine@4.1.9680
#addin nuget:?package=Ab4d.SharpEngine&version=4.1.9680
#tool nuget:?package=Ab4d.SharpEngine&version=4.1.9680
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
- Render CT and MRI scans by using Volume rendering
- 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" on Ab4d.SharpEngine.Samples on GitHub.
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" on Ab4d.SharpEngine.Samples on GitHub.
Browser Browser and browser based apps like Electron require Ab4d.SharpEngine.WebGL NuGet package that uses WebGL rendering. See Online browser demo.
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 is compatible. 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. |
-
net10.0
- No dependencies.
-
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.Assimp
Ab4d.SharpEngine.Assimp provides classes that can use Assimp importer to import 3D objects into Ab4d.SharpEngine 3D rendering engine |
|
|
Ab4d.SharpEngine.WinUI
Ab4d.SharpEngine.WinUI defines WinUI controls that can show 3D scene rendered by Ab4d.SharpEngine 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 |
|---|---|---|
| 4.1.9680 | 0 | 7/3/2026 |
| 4.0.9594 | 2,230 | 4/8/2026 |
| 3.2.9509 | 847 | 1/13/2026 |
| 3.2.9386 | 1,420 | 9/12/2025 |
| 3.2.9364-beta | 291 | 8/21/2025 |
| 3.1.9316 | 967 | 7/7/2025 |
| 3.1.9300-rc3 | 303 | 6/18/2025 |
| 3.1.9299-rc2 | 311 | 6/17/2025 |
| 3.1.9287-rc1 | 277 | 6/5/2025 |
| 3.0.9208 | 671 | 3/19/2025 |
| 3.0.9196 | 860 | 3/6/2025 |
| 3.0.9195-rc4 | 378 | 3/5/2025 |
| 3.0.9175-rc3 | 314 | 2/13/2025 |
| 3.0.9173-rc2 | 272 | 2/11/2025 |
| 3.0.9169-rc1 | 308 | 2/7/2025 |
v4.1.9680
- Added support for rendering Percentage Closer Soft Shadows.
- Significantly improved performance when using Avalonia with Vulkan backend by removing a back buffer copy operation and waiting for that to be finished.
- Added support for skeletal (skinned) animations. The following methods were added to the Scene object: AddAnimatedSkeletonMesh, RemoveAnimatedSkeleton, RemoveAnimatedSkeletonMesh, AddAnimatedSkeletonMeshes, AddAnimatedSkeletonMeshes, RemoveAllSkeletonAnimations, RemoveAllAnimations.
- Added Skeleton and BonesDictionary properties to Mesh object.
- Improved precision of FitIntoView methods.
- Added support to animate FitIntoView camera change - use new FitIntoView overloads that also take animationDurationInMilliseconds and easingFunction as parameters.
- Improved support for WinForms apps by adding RenderAsManyFramesAsPossible, RenderingTimerInterval and FramesPerSecond properties to SharpEngineSceneView for WinForms. This provides better control over the rendering loop.
- Improved PhysicallyBasedMaterial that can now automatically combine individual metalness and roughness textures into a single MetalnessRoughness texture. Before this needed to be done in the loader code by the user.
- Improved AnimationBuilder by adding support to create an animation object without providing a Scene object. This is needed when the animations are created from AssimpImporter where the Scene object was not provided at creation time.
- When Utilities.Log.Error is called from SharpEngine, this always sets the Utilities.Log.LastErrorMessage even if logging is disabled.
- Improved setting the reason why SharedTexture is not used. The reason is sent as a string in the PresentationTypeChanged event handler.
- Improved StandardMesh.DumpMeshInitializationCode and GetMeshInitializationCode to use InvariantCulture when writing Vector3 values.
- In FitIntoView methods in IFitIntoView interface renamed the waitUntilSceneViewSizeIsValid parameter to waitUntilCameraIsValid. This way the parameter matches the name of the paremeter in the actually implemented methods in TargetPositionCamera and FreeCamera.
- Added FormatMatricesHorizontally extension method to Matrix4x4 array type.
- Added Camera.Clone that clones the camera to a new camera object.
- Prevented a crash that may happen sometimes when Avalonia's window is rapidly resized.
- Improved memory management in GpuImage.Resize method when the new required memory size is significantly lower than the allocated size.
- Prevented updating SharpEngineSceneView control for Avalonia after it was disposed.
- Added MathUtils.GetMaxAxisAngle method that returns the axis and the axis vector of the maximum specified angle (rotateX, rotateY, rotateZ).
- Added MathUtils.GetCoordinateAxes method that takes an axisVector parameters and returns the new CoordinateAxes enum (has values XAxis, YAxis, ZAxis or None).
- Fixed TextureLoader.CreateTexture method that uses the textureCreatedCallback parameter.
- Fixed calling Clone method on a material that has lazy-loaded texture (the DiffuseTexture object will be created when the material is initialized with a GpuDevice object).
- Fixed using ObjImporter.ImportAsync method.
- Fixed values passed in the ModelRotatedEventArgs that are used by ModelRotator. Now the fields that represent the angles that are not rotated remain 0 and are not set to 1.
- Added GetAxisAngle method to ModelRotatedEventArgs.
- Added AxesSelected and AxesDeselected events to ModelMover and ModelScalar. Added AxisSelected and AxisDeselected events to ModelRotator.
- Fixed unsubscribing UI events when SceneView that is used for InputEventManager is disposed.
- Fixed problems when GpuImage that is used by multiple materials is disconnected from one material.
- Fixed using SharpEngine on Linux with Wayland compositor in Avalonia app without Vulkan backend. In this case SharpEngine now changes the PresentationType from SharedTexture to WritableBitmap and writes a log error to use Vulkan backend to enable SharedTexture.
- Fixed changing IsLineStrip property on MultiLineNode with StartLineCap or EndLineCap not set to None.
- Improved glTFImporter to support importing keyframe and skinned animations.
- Improved AssimpImporter to support importing keyframe and skeleton (skinned) animations. Reading animations data is enabled by default, but can be disabled to improve import speed by setting the new ReadAnimations and ReadSkeletalAnimation to false. After the animation is imported, the following new properties are set: Animations, Skeletons, AnimatedSkeletonMeshes.
- Fixed AssimpImporter in case a material defines an emissive texture - before the material may look white because EmissiveColor was set to white.
- When UsePbrMaterial in glTFImporter is false (by default), then the importer does not load and create MetalnessRoughness, NormalMap, AmbientOcclusion and Emissive textures. This improves importing of files with PBR textures.
- Note that new Ab4d.SharpEngine.Assimp requires a new version of Ab4d.Assimp library v1.3.9624.