Last week we released a second patch for the stable 1.10 and I was busy building more of the foundation for the new UI framework and next-gen renderer.
was released on Friday, May 3rd and it comes with two bug fixes: 3D psprites are no longer affected by fog, as world fog may not be configured for the same coordinate space as the models, and there was a Snowberry issue where profiles could not be duplicated correctly.
While considering the needs of the new UI widgets in the client, I realized we should have a general-purpose runtime data cache/storage element in libdeng2. A large portion of the week I spent on writing such a class. It is now called Bank
and it should prove very useful in the future as the foundation of many of the resource management/caching needs in the engine (e.g., audio samples, materials, textures, etc.). One of the most fundamental advantages it provides is support for multithreaded operations
: hitherto Doomsday has used a simple "busy mode" approach that is effectively always single-threaded except when it comes to drawing a progress indicator during a work task (such as map or texture loading). With Bank, all the CPU cores available can be used fully as separate tasks are run concurrently in separate threads. However, while this is simple in principle, in practice there is plenty of care to be taken to make all the central systems of the engine thread-safe. In the end this will be worth it, though, as we can dispense with the old-fashioned busy mode and run some tasks in the background while the game is running normally.
I also continued testing out new GL2 classes in the sandbox
. One of them is a texture atlas:
Texture atlases will be a very integral component for all future rendering code in the engine.
Today's unstable build failed due to some minor issues resulting from merging new code from the "ui-framework" branch; there will be a new build tomorrow.
My plan for this week is to continue work on new GUI widgets for the client, building on the GL2 classes, Bank, and AtlasTexture.