Hi all
This has been my hobby project for quite a few years now
It started as a small engine to serve as a sandbox to try out new 3d graphics ideas
After adding many features through out the years and re-writing the entire engine a few times, this is the latest state
It currently supports loading models with animations, textures, lights, shadow maps, normal maps, and some other goodies
I've also recently added voxel raymarching as an alternative renderer, along with a fun physics simulation :)
There is one instance where I saw you take a shared_ptr and then proceed to move from it. That could literally have been a unique_ptr and if you are making an assumption that that shared_ptr is still valid in another part of the codebase you at best now have UB but it is almost certainly a bug.
Just replace shared_ptr with unique_ptr, the advantage of managed languages is that you are in control of the memory, to then proceed to just use ref counting means you may as well have written the code in Java / C# since you incur all the same overhead of atomic references and don't get the advantages of a sophisticated GC.
unique_ptr can also trivially be upgraded to shared if you actually do need ref counting.