Skip to content

Releases: Devsh-Graphics-Programming/Nabla

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.

New Asset Converter

15 Oct 22:53
Compare
Choose a tag to compare
New Asset Converter Pre-release
Pre-release

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.