Releases: Devsh-Graphics-Programming/Nabla
v0.5.1-alpha : C++20-like Concepts in HLSL202x
C++20-like concepts added to our HLSL Header library, try it at http://godbolt.nsc.devsh.eu
Examples 01,02,03,04,05,06,07,08,09,10,11,12,20,21,22 - cppcompat,23,24,61,62 are tested and known to work.
New Asset Converter
Completely de-duplicates all resources based on contents (their hashes) and merkle-tree equivalents for DAGs.
Doesn't handle BLAS and TLAS construction yet and mip-map recalculation/generation.
Examples 01,02,03,04,05,06,07,08,09,10,11,12,20,21,22 - cppcompat,23,24,61,62 are tested and known to work.
Fix a few Examples
Examples 01,02,05,06,07,09,10,29,33,34,35,38,55,61-UI,both 62 are tested and known to work.
ImGUI and Built-in Resources Rework
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
Async I/O Reworked and Fixed
Changelog
Fixes
nbl::system::IAsyncQueueDispatcher
design failure and deadlocks
Done as part of #476
Next Release
Fixes
Built-in Resources Compilation failure and rework
#477 by @AnastaZIuk
Compilation on GCC and Clang on Linux
To be addressed by: https://github.com/Devsh-Graphics-Programming/Nabla/pulls/pollend
DXC doesn't compile on Linux
Probably @AnastaZIuk will do this
Future Releases
Fixes
Swapchain Manager
The way we deal with resizes is very disorganized and could improve.
Double Convolution and Image Filter rework
Done as part of #435
Less verbose CommonAPI
Basically a refactor
Ability to build everything as a shared lib on Linux
See #474
Pure Features
X11/XCB Windowing and UI on Linux
Basically non-headless Vulkan mode for Linux #462
Bring back CUDA and OptiX interop
Would be nice to get old missing features back.
Vulkan Working and Operational
Things left to hammer out
Bugs
nbl::system::IAsyncQueueDispatcher
design failure and deadlocks
Being addressed in https://github.com/Devsh-Graphics-Programming/Nabla/compare/async_queues?expand=1
Destructors of certain objects are not threadsafe
Issue #472
Built-in Resources Compilation failure and rework
TODO by @AnastaZIuk
DXC doesn't compile on Linux
Need access to HLSL on Linux
Features
Compilation under GCC and Clang on Linux
To be addressed by: https://github.com/Devsh-Graphics-Programming/Nabla/pulls/pollend
X11/XCB Windowing and UI on Linux
Basically non-headless Vulkan mode for Linux #462
Swapchain Manager
The way we deal with resizes is very disorganized and could improve.
Less verbose CommonAPI
Basically a refactor
Ability to build everything as a shared lib on Linux
See #474
Bring back CUDA and OptiX interop
Would be nice to get old missing features back.
Recruitment Task Starting Point
Many examples validated and fixed up.
Path Tracer v0.1.2-alpha
Features:
- Better failure logging
- Log resource sizes
- New camera controls (LM-Drag look around, RM-Drag move around, MouseWheel Zoom)
- Multiple render views in one scene
- GLSL raytracing VM compiles asynchronously in a thread
- Output to EXR
- Commandline operation
- stop at sample count
Bugfixes:
- Works on Intel HD Graphics!
- Fix 4k rendering (release OpenCL resources)
- Fix mixture BSDF Material Compiler AST node
- Allow for 6k rendering on 8GB GPUs
Path Tracer v0.1.1
Same as before, just added Normal Map support and fixed some Virtual Texturing bugs.
Path Tracer v0.1
You can try it out on any recent Nvidia GPU with scenes from the following resource:
https://benedikt-bitterli.me/resources/