Skip to content

ImGUI and Built-in Resources Rework

Pre-release
Pre-release
Compare
Choose a tag to compare
@devshgraphicsprogramming devshgraphicsprogramming released this 27 May 19:14
· 3222 commits to master since this release
51405b6

Changelog

New Features

ImGUI Integration

First draft, no bindless and single drawcall yet :D

Built-in Resource Library creation CMake Utility

All built-in resources now work as a "special" file archive to integrate better with Nabla's virtual file system.

The CMake utility to make a "builtin resource library" will package any resources you want into a special CArchive : nbl::system::IFileArchive in your own namespace. This means that now examples and executables using Nabla can package their own shaders, images, etc. that need to be shipped with the EXE into the EXE itself using the exact same mechanism Nabla uses internally.

We haven't upgraded all examples to use that though, yet...

Resource Aliases

You can now access the same builtin resource (as long as its embedded, if its not embedded then its not built-in and ergo still on your filesystem and you need a symlink) via multiple paths.

Mounting Directories as Archives

The CMountDirectoryArchive lets you "pretend" that a given absolute directory path is available virtually in the Nabla filesystem with a different prefix path.

Beware: The content listing is not cached, so it might slow down the filesystem significantly when you mount it. Will fix in some future release.

Vulkan Synchronization Validation Support

Added Vulkan Synchronization Validation enable option when creating the IAPIConnection.

Fixes

Made IFileArchive::getItemList() threadsafe and efficient

Before it was just efficient, by returning a reference to a vector. Now a refcounted reference (a shared pointer) to a constant vector created on the heap is returned so that multiple users in multiple threads can share the memory and benefit from stable iterators, in the event some other invocation of getItemList() returning a different listing, they'll just see the old stale data as opposed to crashing.

This is to support Read/Write Archives in the future, but that feature needs resizing of the pool allocator for the garbage collected IFile views.

Better DLL builds (less weird cases of missing symbols when using in the field)

Most Clang compilation issues hammered out