UltravioletFramework / ultraviolet

The Ultraviolet Framework is a .NET game development framework written in C#.
https://github.com/UltravioletFramework/ultraviolet/wiki
MIT License
541 stars 46 forks source link

SIMD Support #120

Open Deecellar opened 4 years ago

Deecellar commented 4 years ago

SIMD Is fairly new with the System.Runtime.Intrinsics corefx library, but, could we use the new hardware vectors for SIMD operations on hardware that support it with the dotnet core CLR.

I know this may be too specific since it only works with the dotnet core 3.0+ CLR at the time of writting but since the .net framework is going to be at the 5.0 state where in theory all this will be unified, would be a nice adition to the library for a better performance in hardware that supports SIMD Instructions.

I think we should wait for the official .net 5 but still, it's not a bad of an idea to at least think about it.

tlgkccampbell commented 4 years ago

I've been considering where I want to take Ultraviolet over the course of the next year. One of the things I want to do is to completely rework the project structure in anticipation of .NET 5 -- if my personal life ever settles down to the point where I can invest a substantial amount of time in this project again. For various reasons, 2019 has been kind of a crazy year for me personally, but I'm really hoping that I can start prioritizing Ultraviolet development again in the new year.

Probably what I'm going to do is deprecate the .NET Framework branch entirely and move to .NET Core for all future development. I think Core is mature enough at this point, and CoreCLR is where all of the interesting new features are, after all, including SIMD. Eventually I would like to eliminate all of the various platform-specific projects entirely, since maintaining them all is a huge amount of work for me; I'm hoping .NET 5 makes this possible, whenever it ultimately gets released.

Deecellar commented 4 years ago

I want to help in this then, since lately I have developed a few game related tools and some extensions for ultraviolet (Thinks more personal for my game development experience, will open source when I have something good), I love the framework more than monogame and love some of the ideas that this project have, the .net 5 announcement made me very happy, since I could drop some side work I have to do with .net framework, .net core and thinking about mono.

I think the right think to do is to pass to .net core since I think that will be the majority of the .net 5 release, and since .net core 3 can publish to all mayor PC platforms the only things to really maintain is the IOS and Android package (Since so far, I don't see signs of .net core on android or IOS but that would be so good) until the release of .net 5.

Meanwhile the API stays the same, it should not break current projects based on the framework, I might have free time after this last stressful days, and maybe I can get some work in this project too.