Releases: Devsh-Graphics-Programming/Nabla
TLASes can track BLASes they reference after a build + Submission Callbacks & Custom Lifetime Tracking
Lifetime Tracking for any IReferenceCounted via a Command Buffer
Absolutely awesome feature, warranting a patch version bump.
You can now call bool IGPUCommandBuffer::recordReferences(const std::span<const IReferenceCounted*> refs);
which will make the Command Buffer hold onto all the refs
until its reset.
This makes it easy to do things such as make the Command Buffer hold onto the IGPUBuffer
s whose Buffer Device Addresses you use in the shaders.
TLASes can track BLASes they use after a build
The builds are versioned as Queue's MultiTimelineEventHandler
don't immediately know that a submission has completed, the TLAS holds only one set of tracked BLASes at a time, only highest can be set.
You don't suffer from ABA signalling problem because callbacks from Host and Device builds hold onto the BLAS ranges they're about to set until the tracking info update time.
Of-course in true Nabla-style everything is overridable and callable directly by you if so wished (e.g. middleware usage).
Submission Completion Callbacks
This was doable before with the TimelineEventHandler
but you were in charge of making it and doing your own polling, now if you want to be extra lazy you can abuse the IQueue
s built-in MultiTimelineEventHandler
which it uses for CommandBuffer (and whatever it references) lifetime tracking.
Think of it as a counterpart to CUDA's cudaStreamAddCallback
or cudaLaunchHostFunc
.
If you put IReferenceCounted
in your std::function<void()>
's internal state, this allows you to also perform custom lifetime tracking but for only a single submit (as opposed to a commandbuffer which may be reused).
Ray Tracing Pipeline and Demo, moved out fresnel functions from math.hlsl to bxdf, more complete tgmath
The ICPU
asset-version of the pipeline not done yet, the creation parameters of the RT pipeline are subject to change ( #839 ).
Added utilities:
system::isDebuggerAttached
erf
anderfInv
functions in tgmath- TEA, LCG, and PCG in
nbl::hlsl::random
Bugfixes:
- circular deps in concepts
- fix
make_unsiged
trait
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.