After a thorough reflection on the progress made during my first engine
project, and an equally honest assessment of its shortcomings, I started on a
complete redesign. The original engine was built purely as a learning exercise
and was never intended for public release which led to my reliance on static
environment variables and manual dependency installation. This had a high
entry barrier for building the project, meaning it'd be harder to show off my
work and what I had learned. Recognizing this I chose to start fresh.
My new engine, Sun, has not only surpassed the scope of its predecessor, but has
done so in considerably less time. Drawing on lessons from following vkguide, I
approached this iteration with greater confidence in my ability to architect systems
in a way that suits the engine's goals.
Notable features implemented in this iteration include a bindless resource setup,
a scene graph, frustum culling, support for point, spot, and directional lights,
glTF/glB asset loading, PBR materials, asynchronous mesh uploading, transparency
with draw call sorting, and a fully custom async compute particle system.
Sun has been validated on Windows 11 using Vulkan 1.3.268. Dependencies are managed
via CMake FetchContent, which should make the build process straightforward for
most configurations, though compatibility across all environments cannot be guaranteed
at this stage.