Skip to content

Releases: Devsh-Graphics-Programming/Nabla

Acceleration Structure API refactor and Asset Converter ReBAR support

06 May 13:32
4793d18
Compare
Choose a tag to compare

Cleaned up the inheritance hierarchy in TLAS and BLAS classes.

Now BLAS is a proper IPreHashed and TLAS has utility static methods to convert a Polymorphic Instance to a non-polymorphic one where the type is embedded in the lower bits of the Aligned Pointer when doing a build where the Instance input buffer is a span of pointers.

Added a demote_promote_writer_readers_lock which is well thought out and actually works.

Asset Converter can be now overriden to assume ReBAR support and create Buffers over DEVICE_LOCAL and HOST_VISIBLE memory, sidestepping the use of a transfer queue to upload the buffer data.

Queue Families declared when creating a Buffer or Image with concurrent sharing mode can now be queried from the object.

Fixed a number of bugs in Descriptor Lifetime Tracking and general inheritance patterns.

Fixed a bug in IUtilities where overflow submits and intended submits signalling timeline semaphores upon which staging buffer deferred memory deallocations were latched, would not get patched to include the COPY_BIT in the signal stage mask.

Minor additions of fma to HLSL/C++ tgmath library.

TLASes can track BLASes they reference after a build + Submission Callbacks & Custom Lifetime Tracking

01 Apr 10:25
4e43183
Compare
Choose a tag to compare

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 IGPUBuffers 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 IQueues 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

31 Mar 12:54
Compare
Choose a tag to compare

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 and erfInv 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

19 Mar 21:21
Compare
Choose a tag to compare

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

Full Changelog: v0.5.4-alpha2...v0.5.5-alpha1

Prefix Sum Blur

24 Jan 15:50
Compare
Choose a tag to compare
Prefix Sum Blur Pre-release
Pre-release

O(1) irrespective of blur radius blur by @alichraghi

FFT Utilities

22 Jan 07:00
Compare
Choose a tag to compare
FFT Utilities Pre-release
Pre-release

FFT and two associated examples now merged, plain compute FFT and FFT Bloom

v0.5.3-alpha2

18 Dec 10:40
ce9ca3d
Compare
Choose a tag to compare
v0.5.3-alpha2 Pre-release
Pre-release

What's Changed

Full Changelog: v0.5.3-alpha...v0.5.3-alpha2

RayQuery Inline SPIR-V RayTracingTrianglePositionFetch in HLSL

22 Nov 10:16
e8f4dca
Compare
Choose a tag to compare
v0.5.3-alpha

Merge pull request #788 from Devsh-Graphics-Programming/ray_query_inl…

Ray Query Example 67

20 Nov 13:19
Compare
Choose a tag to compare
Ray Query Example 67 Pre-release
Pre-release

BLAS and TLAS building and redering using HLSL tested.

v0.5.1-alpha : C++20-like Concepts in HLSL202x

05 Nov 18:25
c586e4b
Compare
Choose a tag to compare

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.