I am informing you that an important new beta version of Ab4d.SharpEngine for the browser has been released.
The new beta2 version brings many new features from the core Ab4d.SharpEngine library. The list of the most important new features is provided below.
But first, I want to talk about an even more important thing than new features. The samples for the previous version (beta1) were written only for a Blazor WebAssembly application. But in most cases, you would want to add 3D graphics to an existing website. Because there are many web frameworks, it is likely that the website is not using Blazor WebAssembly.
To solve that, the new samples also come with a NoBlazorBrowserDemo solution. This shows how to create a pure WebAssembly .Net project with no references to Blazor. That project can reference Ab4d.SharpEngine.Web library. The code in this project creates the 3D scene by using Scene, SceneNodes and other objects from the Ab4d.SharpEngine library. The code can also use JavaScript interop so when added to a web page it can call the functions that are defined in JavaScript and also JavaScript functions (for example, button event handlers on the web page) can call the .Net code to update the 3D scene.
When that project is compiled for the Release build and published, it generates a few JavaScript (.js) and WebAssembly (.wasm) files that can be added to any website.
Because of very efficient trimming, the size of all the generated files (including the .NET Runtime) is only 9.3 MB. When compressed with Brotli, the size of all the code required to show a simple 3D scene is only 2.2 MB! (see screenshot below)
The new samples demonstrate how to show the 3D scene in a simple HTML and JavaScript web page by using different web servers. The following samples are available:
- Asp.Net Core web server
- Express Node.js web server
- Python's socketserver
Here is a screenshot when Express Node.js is used as a web server (note the marked transfer size):

The NoBlazorBrowserDemo solution can be used as a demonstration of how to use Ab4d.SharpEngine to easily show complex 3D graphics in any web framework, including Angular, React, Blazor with server-side rendering and any other. Note that I am not an expert on web servers and web frameworks. If you know of any improvements to the samples, or can provide another sample using a popular web framework, please write to issues or discussions, or create a PR.
And as with the previous version, this version also includes the Blazor WebAssembly project. The new sample is updated to demonstrate the functionality of the new beta 2 version. The following is a list of the most important new features:
- Added support for loading, creating and showing textures.
- Added support for showing bitmap fonts and vector fonts generated from TrueType font files.
- Added ObjImporter that can import obj files.
- Added support for SolidColorMaterial.
- Fixed sorting transparent objects by camera distance.
- When WebGL 2.0 is not supported, then WebGL 1.0 is used.
The following screenshot shows the new sample (note that teapot was loaded from a obj file and has textures; there are also bitmap and vector fonts - later generated from a TrueType file):

And here is another screenshot showing Obj viewed with a more complex obj file imported:

You can also check the online demo here (if you see an error, please disable caching - usually it helps to press CTRL-F5 to reload all the files)
The release of the v1.0 is still planned for the end of 2025. See the Current implementation details to check which features from the main Ab4d.SharpEngine library are already implemented and which will be available for v1.0.
In 2025 I also plan to release a new version of Ab3d.PowerToys and Ab3d.DXEngine. The development versions of both libraries already have many improvements and fixes. Some are still planned to be implemented. For Ab3d.PowerToys, one of the more interesting new features is smoother camera rotation that will nicely animate the camera when it is rotated by the user (this can be enabled on request; the default behaviour will stay unchanged). For Ab4d.DXEngine, I will try to provide a version that will not depend on SharpDX but will use System.Numerics for Vector3 and Matrix4x4. The interop for DirectX 11 will be embedded into the Ab3d.DXEngine library. My tests show that using System.Numerics instead of SharpDX.Mathematics can provide significant performance improvements because of better use of SIMD instructions. Also, because SharpDX is not updated anymore, some users are concerned about that. Embedding DirectX interop into the library will also remove those concerns.
I will try to do my best to preserve the names of the classes, methods and parameters as much as possible. But because of some namespace changes and new class names (for example, Matrix4x4 instead of Matrix), the new library will require some changes to the user code.
But if you are happy with SharpDX and would only want to upgrade to a new version of Ab3d.DXEngine without any modifications, then there will also be a new Ab3d.DXEngine version that will still use SharpDX. The plan is to have two NuGet packages: "Ab3d.DXEngine" will use the embedded DirectX interop and System.Numerics; but there will also be "Ab4d.DXEngine.SharpDX" NuGet package that will still use the SharpDX library.
If you are using Ab3d.PowerToys or Ab3d.DXEngine and you have any new feature requests, now is the best time to report them.