Releases: Devsh-Graphics-Programming/Nabla
vk::BufferPointer equivalent, tgmath.hlsl , Complete C++/HLSL/GLSL intrinsic parity, float64_t emulation with uint64_t, Multiple Entry Point HLSL Shader Compilation, Updated Vulkan Baseline, Resizable LRU Cache
DXC has been forked
Important: Nabla uses a custom fork of DirectX Shader Compiler, where you can annotate an inout
variable with [[vk::ext_reference]]
to prevent copy-in-copu-out calling convention and retain pass-by-restrict-reference.
Bugfixes
- Fix false positive aspect mask error raising by @Crisspl in #826
- video: free command buffers when destroyed by @alichraghi in #830
- Workgroup Scan OBB Scratch Access by @devshgraphicsprogramming in #816
- png loader: fix grayscale/alpha images bug by @alichraghi in #813
- Fixed some hlsl functions by @Przemog1 in #842
- Fixed float16_t concepts by @Przemog1 in #844
- Dxc spirv references by @Przemog1 in #848
- DXC member decorate, Spir-V 1.4 backports and KHR_fragment_shader_barycentrics support by @devshgraphicsprogramming in #849
Full Changelog: v0.5.4-alpha2...v0.5.5-alpha1
Prefix Sum Blur
O(1) irrespective of blur radius blur by @alichraghi
FFT Utilities
FFT and two associated examples now merged, plain compute FFT and FFT Bloom
v0.5.3-alpha2
What's Changed
- Fix #799 by @alichraghi in #800
- ICPUBuffer: remove size field from creation params by @alichraghi in #802
- Cpp compat intrinsics refactor by @Przemog1 in #801
Full Changelog: v0.5.3-alpha...v0.5.3-alpha2
RayQuery Inline SPIR-V RayTracingTrianglePositionFetch in HLSL
v0.5.3-alpha Merge pull request #788 from Devsh-Graphics-Programming/ray_query_inl…
Ray Query Example 67
BLAS and TLAS building and redering using HLSL tested.
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.