Skip to content

Releases: Devsh-Graphics-Programming/Nabla

Morton Code HLSL/C++ library, CMake 4.x support and Vertex Welder

14 Dec 11:38

Choose a tag to compare

What's Changed

New Features

  • VS2026 CMake 4.2 support by @AnastaZIuk in #951
  • CMake build targets for SPIR-V shaders, CI now tests example shaders building by @Przemog1 in #944
  • Dump info about all Vulkan Physical Devices to JSON (not just ones that meet Nabla core profile), by @YasInvolved in #938
  • llvm-pipe preliminary integration into CI pipeline (however llvm-pipe does not meet Nabla Core Profile - see Mesa issues we've filed)
  • New morton class with arithmetic and comparison operators by @Fletterio and @kevyuu in #860
  • Iridescent Fresnel draft (subject to change) by @keptsecret in #918
  • Geometry Vertex Welder utility
  • emulated_uint64_t for Vulkan devices without shaderInt64 support like the Quest 2
  • other minor features like system::to_string for HLSL vectors, nbl/builtin/hlsl/colorspace.hlsl, polar coordinate header

Improvements

  • BxDF HLSL Library Interfaces and API finalized
  • Vertex Hash Grid is its own utility now to be shared between algorithms
  • more functional.hlsl functors like equal_to and shift operator equivalents
  • nbl::hlsl::truncate
  • nbl::hlsl::sincos_accumulator finalized
  • Image, font and zlib 3rdparty library updates
  • radix sort does histogramming and scatter in alternating directions keeping cache warm
  • more SPIR-V inline intrinsics
  • more nbl::hlsl::mpl functions

Bugfixes

  • Clean up the NBL_ C++/HLSL compatibility headers (esp for constexpr) hence the API breakage
  • DXC Updates
  • Smooth normal computation uses proper O(1) algorithms
  • nbl::hlsl::math::linalg::promote_affine actually fills the diagonal of expanded matrix with 1s now
  • nbl::hlsl::extent specialization clean up for vector and matrix

Full Changelog: v0.8.0.1...v0.9.0.0

General Purpose Address Allocator

03 Oct 09:19

Choose a tag to compare

What's Changed

Improvements

  • Material Compiler v3 Frontend finalized

Bugfixes

  • General Purpose Address Allocator was popping free blocks on some failed allocations

Full Changelog: v0.8.0.1...v0.8.0.0

Latest DXC and HLSL BxDF Library

22 Sep 09:43

Choose a tag to compare

What's Changed

New Features

  • Experimental Material Compiler v3 Frontend

Improvements

  • Updated DXC
  • HLSL Non-Cook-Torrance BxDFs no longer experimental

Bugfixes

  • DXC no longer throws llvm::cast<X> exceptions in Complex Subgroup utilities like FFT and SCan
  • always_true no longer used for FMixIsCallable

Full Changelog: v0.7.2-beta2...v0.8.0.0

PolygonGeometry Unwelding and Smooth Normal Recomputation

12 Sep 15:19

Choose a tag to compare

What's Changed

Full Changelog: v0.7.2-alpha2...v0.7.2-beta2

Fix ImGUI nite and Null semaphore return

12 Sep 10:00
61a4bd2

Choose a tag to compare

What's Changed

Full Changelog: v0.7.2-alpha1...v0.7.2-alpha2

v0.7.2-alpha1

26 Aug 11:20

Choose a tag to compare

What's Changed

New Features

  • Almost all SPIR-V intrinsics for Raytracing Pipeline exposed (Except Ray Terminators and ReportHit) so you don't need to rely on HLSL intrinsics getting translated/codegenned properly
  • AABB computation for Polygon Geometries
  • Non-List Triangle Indexings to Triangle List Indexing conversion

Bugfixes

  • Fix small bug in matrix preventing product of unorthodox matrix sizes by @Fletterio in #908

Known Bugs

Full Changelog: v0.7.1-alpha1...v0.7.2-alpha1

v0.7.1-alpha1

18 Aug 14:18
69c0561

Choose a tag to compare

v0.7.1-alpha1 Pre-release
Pre-release

What's Changed

New Features

  • Github CI now tests Examples which are not added with EXCLUDE_FROM_ALL to the meta-example project
  • IGeometry, IPolygonGeometry classes
  • Polygon Geometry can be used with Asset Converter from day one
  • CGeometryCreator making basic geometries like cubes, cones, disks, etc.
  • IGeometryLoader base class (Mesh loaders are back!)
  • PLY Geometry Loader
  • Mitsuba Serialized Geometry Loader
  • CAD Example can now do Digital Terrain Models and display isolines and heightshading on tringular and grid meshes
  • Precompile your Shaders to SPIR-V using NSC (with all our STL headers) and also as a CMake command!
  • Precompile Shader Permutations with different JSON generated Device Capability Traits (we also have C++ autogen utilities that let you resolve the keys to them depending on device capabilities)
  • Normal and Quaternion quantization caches done with our HLSL types
  • CGeometryManipulator stub, more functionality from deprecated MeshManipulator to come
  • finished the AABB.hlsl shape
  • added transform, union and intersect functions which can be specialized for shapes in the HLSL library

Removals

  • IRenderpassIndependentPipeline
  • IMesh and IMeshBuffer
  • MeshPackers V1 and V2, we encourage programmable pulling from BDA now

Improvements

  • made the refctd_memory_resource::allocate and deallocate virtual so they can be overriden (the STD::pmr didn't make sense here)
  • created a adoption_memory_resource
  • most of algorithm.hlsl also compiles as C++ Host code
  • Builtin resource and PCH improvements
  • LRU Cache and Doubly Linked List Container improvements for resizability etc.
  • Replaced Parallel Hashmap with Greg's Template Library as the submodule
  • skip duplicate validation for SPIR-V optimizer
  • Updated DXC
  • Boost-Wave Shader preprocessor now its own Translation Unit, can be always compiled with optimizations (so even Debug builds don't take minutes preprocessing the input to DXC)
  • target SPIR-V version is now a shader preprocessor option (because of __SPIR_V_MAJOR__ and friends)
  • fast_affine.hlsl for doing mathematical abominations like multiplying 3x4 matrices with 3x1 vectors as if they're padded 4x4 and 4x1
  • cofactor and fast inverse HLSL utilities (useful for nice fast normal matrix calc)
  • IUtilities has a create factory which can fail if it can't allocate the amount of HOST_VISIBLE memory you requested
  • split MonoAssetManagerAndBuiltinResourceApplication into two classes
  • alPreviousStages and allLaterStages sync utlitity functions
  • emulated_vector now has length_helper specialization, and inversesqrt for emulated_float64
  • constexpr findLSB variant
  • 3x3 matrix from quaternion HLSL utility

Bugfixes

  • DeferredFreeFunctor actually tested and works now
  • AccelerationStructure::validBuildFlags infinite recursive call
  • Shader compiler adopt_memory typo
  • keep boost-wave compile options consistent and encapsulate/don't leak it

Full Changelog: v0.7.0-alpha1...v0.7.1-alpha1

Multi-Entry Point SPIR-V Shaders - Removal of IGPUShader and ICPUShader

18 Jun 19:42

Choose a tag to compare

What's Changed

There's now only a single IShader.

Shader Stage, and Specialization Info is being provided directly as Pipeline Creation Parameters.

This means that the SPIR-V each shader gets its capabilities and extensions trimmed based on the entry points used by a single pipeline.

Aggressive dead code elimination SPIR-V optimization is necessary for this to function.

Full Changelog: v0.6.2-alpha2...v0.7.0-alpha1

Bugfix: Missing `tuple.hlsl` from embed

18 Jun 12:41

Choose a tag to compare

Pre-release

Default build of example 23 and 29 didn't work

Workgroup2 Reductions and Scans

18 Jun 09:29

Choose a tag to compare

Pre-release

What's Changed

Workgroup Scans

nbl::hlsl::workgroup2 reduce + scan by @keptsecret in #876

Highly Performant, the subgroup emulated variant (Stone-Kogge adder made of subgroupShuffleUp) up to 200% faster than native (subgroupInclusiveAdd) on Nvidia RTX GPUs.

Blogpost incoming.

Full Changelog: v0.6.1-alpha1...v0.6.2-alpha1