Kraken Update
Work on the Kraken engine is ongoing. I am deep in refactoring the engine, building it up as a more modern platform able to support some new experiments and ideas.
Some small updates along the way…
- I have merged the Vulkan API feature branch to master where I will contine the refactoring.
- There is now an “hourglass” pattern API, inspired by Vulkan’s interface. This API provides a C API with structures containing only POD types. Changes within the engine will no longer break binary compatibility. The design of this API is intended to support fully asynchronous, thread safe operation. A unique feature is the use of resource and node mapping handles. These essentially function in a similar manner to CPU registers or variables, allowing multiple commands to be executed asynchronously while referencing assets and scene graph nodes created/affected by prior commands in the transaction.
- The math functions have been broken out into their own library, “Hydra”, which now contains only POD data types. This is also useful outside of Kraken. Kraken consumes this as a Git submodule.
- There is now a “kraken-convert” utility built on the Kraken runtime, which can be used to automate asset pipelines.
- A CMake meta-build has been implemented. The CMake scripts can be used to generate project files in multiple formats, including Ninja and MSVC. Build times are much faster with the parallelism made possible with Ninja, especially on many core systems such as Threadripper.
- The CMake scripts now fully bootstrap a Kraken SDK bundle. The Kraken Runtime library is built first, then used to build kraken-convert, which is then used to create the standard assets krbundle. The scripts finally assemble the artifacts into an “output” directory including the public headers for distribution.
- kraken-convert now validates shaders during the bundling process, with an embedded Glslang library. It will soon also compile them to Spir-v to eliminate the need for any 3rd party utilities or manual steps.
- I have created a new documentation site, which I am updating as development on the API continues: https://docs.krakenengine.com
I aim to give more regular updates, especially as the engine is becoming easier to use in other projects.
My next milestone is to be functionaly equivalent to the feature set used in “Circa 1948”, with the new API and Vulkan backend.