CodeWalker icon indicating copy to clipboard operation
CodeWalker copied to clipboard

Major rewrite and update to .NET 8

Open niekschoemaker opened this issue 2 years ago • 2 comments

Ehh yeah, this is a pretty big one.

Been working on this for a while for past few weeks, managed to get performance quick, like real quick compared to original version.

And decided to upgrade the whole code base to .NET 6 (this would be up for debate, but in my opinion this is a great step for the longevity of the project as a whole and adds a lot of modern feature)

I also added unit testing (since I was doing a lot of changes having something to hold my hand and ensure I didn't break things was necessary) for some components and will probably continue to add some more tests during the weeks.

Changes in short:

  • Added unit testing
  • Updated code base to .NET 6
  • Added support for open file with for models and meta files
  • Performance improvements
  • Added LOD support for models
  • Fixed some small shader related performance issues (makes deferred shading with LOD lights run with acceptable performance)
  • Some minor bug fixes
  • Added logging to file and Console through Console.WriteLine (useful for debugging mostly)

the main thing I did to get the performance improvements was adding spans to avoid unecessary memory allocations and adding multi threading, these two together made it quite a lot quicker as there's not that many GC pauses anymore (from around 50%+ spend in GC to around 10%)

I don't really expect this to be accepted instantly, so please take your time to look it through as it contains a lot of changes, but I myself have been running it for a while and it appears to work without issues (mostly use it for models,textures and meta files from explorer en project form)

niekschoemaker avatar Nov 14 '23 15:11 niekschoemaker

And I know, the commits are large, that's because this started as me just screwing around in the code base a bit, but ended up being quite a massive undertaking in the end, which in my opinion is good enough quality to deserve a pull request.

niekschoemaker avatar Nov 14 '23 15:11 niekschoemaker

Added a ton more updates, performance should be even better now, and more reliable.

Also updated it further to .NET 8 (since that has been released in the meantime)

Some optimizations aren't the neatest they can be, but still working on that, so still improving and refactoring the code as I go.

niekschoemaker avatar Jan 08 '24 04:01 niekschoemaker