Commit 7c820fd1

– add descriptor sets for every model which contains the position + texture
– big refactoring so that we use this instead of trying to push this into many dynamic UBOs
– introduce many bleeding handles. fix this.

This rectifies a misunderstanding on my part of how to do things in Vulkan, which encourages an arbitrary number of descriptor sets as opposed to a bigger number of dynamic uniform buffer objects (UBOs). To this day (Septer 2019) I am unsure if this is the right way to go, since I am in no way an expert. 🙂
While this fixed the basic approach and got things working again, it also introduced the creation of a lot of Vulkan handles that weren’t properly freed again.

Commit 764460fb

– add dummy textures so that we can run the renderer before textures were loaded
– implement removing models (and their textures)
– keep track of the occurences of textures and do not overwrite them if they have the same id (do not bleed handles)
– attributes for certain function in the renderer (fix clion warnings)

Similar to the ModelManager, the TextureManager is also having the concept of dummy data to make sure to never crash, even if not fully initialised.
Furthermore it is now possible to fully remove models again, releasing the resources of models/textures if no instance of this type of model/texture no longer exists.

Commit e90d9d96

– finalise support for dyanmic uniform buffer support to update object locations
– do not query the family queue indices *every* time when creating a buffer
– try to find a physical device that supports exclusive transfer queues

This completes the dynamic uniform buffer support started in the previous commit. Furthermore OLives finally supports having models in arbitrary positions.
A small fix was made to let OLives run on computers with more than one GPU.

This also happens to be the first screenshot of OLives existing (taken from a video), this is supposed to showcase the new ability to have separate instances of a model in different positions.