[Enhancement] 3D graphics bindings #129
-
SummaryI make .net tools for 3D data processing and rendering and I found .Net lacks of a low level engine to make custom 3D applications for architecture and engineering. I tried to embed Urho3D and some WPF toolkits but they are too high-level and OS specific. Unity 3D is another possible choice but it is not embeddable, its workspaces merge 3D models and code in a unmaintainable way and it hasn't a 2D UI library. So what about to include in MAUI something like a webgl engine just to enable 3D graphics to run in. NET on all platforms? API ChangesThe 3D environment could be implemented in a specific control within its namespace (System.MAUI.GL) Intended Use CaseMove applications for architecture, design and engineering to .NET 6. |
Beta Was this translation helpful? Give feedback.
Replies: 11 comments 12 replies
-
UrhoSharp is not platform-specific. Like SkiaSharp, it targets .NET Standard 2.0 and is cross-platform. |
Beta Was this translation helpful? Give feedback.
-
Yes, urhosharp is a cross-platform engine, but I didn't find an access to low level graphics to render models with custom shaders. Game engines also use y-up coordinate systems and sometimes clockwise rotations and this is not common in engineering. WebGL instead is highly customizable and low level, so a framework like three.js could unlock many features in a .NET environment. |
Beta Was this translation helpful? Give feedback.
-
This is a request for low level cross-platform dot net 3d graphics. MAUI is not the right place for this as you would want this to work across all .Net UI projects not just MAUI. Also WebGL is not suitable as that is for web. I don't use 3D graphics but from a quick search the project that would come closest to meeting your needs is OpenTK. Is there a reason you don't mention this? |
Beta Was this translation helpful? Give feedback.
-
@charlesroddie thank you for the response. I tried many engines and libraries, but I didn't find a good solution in .NET (C++ and JS have the best solutions at the moment). I mentioned webgl as an example because it's a good abstraction on both hardware and graphics libraries (for cross platform applications, even if run in a webview), and at the same time it gives the developer the possibility to work on shaders and define custom materials with parameters. I know OpenTK and it has been a good project for. NET Framework. About cross-platform I don't think it's a good solution because it lays on OpenGL and it could be dropped on some devices in future (see Metal on Mac). Furthermore OpenTK is a bit "slow" in following .NET releases (I'm still waiting for a stable version which is compatible with .NET Core) and it's not supported by Microsoft. Maybe the best way to add 3D Graphics in. NET could be to add an internal low level engine with bindings for each UI framework. This would make. NET suitable for many cross platform applications and increase its adoption through new markets. |
Beta Was this translation helpful? Give feedback.
-
@deviloper So you are looking for an .net abstraction layer that can deploy to multiple low level frameworks. I agree that this would be very good for cross-platform development, and while it wouldn't be in Maui in a strict sense, it would be a similar/allied project. Have you tried https://github.com/mellinoe/veldrid ?
|
Beta Was this translation helpful? Give feedback.
-
@charlesroddie It seems to be an interesting project, I will try it in next days, thank you! |
Beta Was this translation helpful? Give feedback.
-
MonoGame https://github.com/quozd/awesome-dotnet There is other solution i believe it's a lot of work too much to be done from scratch here. But integrate with monogame or Unity should be intresting. But they use Mono so i don't know if it's possible. |
Beta Was this translation helpful? Give feedback.
-
Hi, From the WaveEngine team we have published some examples on how to integrate our graphics engine with some UI technologies like SDL, WPF, UWP or Windows Forms here: https://github.com/WaveEngine/UIWindowSystemsDemo More samples here too: https://github.com/WaveEngine/Samples The API is ready to use mutiple displays in a single WPF application, because we need this to code our editor which is based on WPF. We are following all the advances of .NET Maui too so as soon as Microsoft published an RC version we will publish new samples to show how to integrate WaveEngine with this kind of application working on different graphics APIs DX, Vulkan and Metal. *Updated: We have already published a template to create project using WinUI 3, here is a simple demo: https://github.com/WaveEngine/UIWindowSystemsDemo |
Beta Was this translation helpful? Give feedback.
-
may be you are looking for veldrid.support opengl,vulkan,metal,crossplatform ,you are welcome. |
Beta Was this translation helpful? Give feedback.
-
If it's an option you can make your own framework or use one available in javascript, you can do anything with MAUI, there is webview you can always use for a web experience, of course you still get things out of it by being able to use .NET RT for your web app |
Beta Was this translation helpful? Give feedback.
-
i migrate veldrid example to maui, see https://github.com/xtuzy/veldrid |
Beta Was this translation helpful? Give feedback.
@deviloper So you are looking for an .net abstraction layer that can deploy to multiple low level frameworks. I agree that this would be very good for cross-platform development, and while it wouldn't be in Maui in a strict sense, it would be a similar/allied project.
Have you tried https://github.com/mellinoe/veldrid ?