Releases: Devsh-Graphics-Programming/Nabla
Morton Code HLSL/C++ library, CMake 4.x support and Vertex Welder
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_tfor Vulkan devices withoutshaderInt64support like the Quest 2- other minor features like
system::to_stringfor 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.hlslfunctors likeequal_toand shift operator equivalents nbl::hlsl::truncatenbl::hlsl::sincos_accumulatorfinalized- 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::mplfunctions
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_affineactually fills the diagonal of expanded matrix with 1s nownbl::hlsl::extentspecialization clean up forvectorandmatrix
Full Changelog: v0.8.0.1...v0.9.0.0
General Purpose Address Allocator
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
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_trueno longer used forFMixIsCallable
Full Changelog: v0.7.2-beta2...v0.8.0.0
PolygonGeometry Unwelding and Smooth Normal Recomputation
What's Changed
Full Changelog: v0.7.2-alpha2...v0.7.2-beta2
Fix ImGUI nite and Null semaphore return
What's Changed
- EXPERIMENTAL Hlsl bxdfs tgmath premerge by @keptsecret in #825
- Make the BxDF review easier by merging
masterfirst by @devshgraphicsprogramming in #862
Full Changelog: v0.7.2-alpha1...v0.7.2-alpha2
v0.7.2-alpha1
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
- Unused SPIR-V built-in variables still emit their OpCapability and Extensions into the SPIR-V module microsoft/DirectXShaderCompiler#7715
Full Changelog: v0.7.1-alpha1...v0.7.2-alpha1
v0.7.1-alpha1
What's Changed
New Features
- Github CI now tests Examples which are not added with
EXCLUDE_FROM_ALLto the meta-example project IGeometry,IPolygonGeometryclasses- Polygon Geometry can be used with Asset Converter from day one
CGeometryCreatormaking basic geometries like cubes, cones, disks, etc.IGeometryLoaderbase 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
CGeometryManipulatorstub, more functionality from deprecatedMeshManipulatorto come- finished the
AABB.hlslshape - added transform, union and intersect functions which can be specialized for shapes in the HLSL library
Removals
IRenderpassIndependentPipelineIMeshandIMeshBufferMeshPackers V1 and V2, we encourage programmable pulling from BDA now
Improvements
- made the
refctd_memory_resource::allocateanddeallocatevirtual so they can be overriden (the STD::pmr didn't make sense here) - created a
adoption_memory_resource - most of
algorithm.hlslalso 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.hlslfor 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)
IUtilitieshas acreatefactory which can fail if it can't allocate the amount of HOST_VISIBLE memory you requested- split
MonoAssetManagerAndBuiltinResourceApplicationinto two classes alPreviousStagesandallLaterStagessync utlitity functionsemulated_vectornow haslength_helperspecialization, andinversesqrtforemulated_float64- constexpr
findLSBvariant - 3x3 matrix from quaternion HLSL utility
Bugfixes
DeferredFreeFunctoractually tested and works now- AccelerationStructure::validBuildFlags infinite recursive call
- Shader compiler
adopt_memorytypo - 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
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
Default build of example 23 and 29 didn't work
Workgroup2 Reductions and Scans
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