Skip to content

RayTracing Invocation Reorder

Latest

Choose a tag to compare

@devshgraphicsprogramming devshgraphicsprogramming released this 25 Apr 09:13
· 2 commits to master since this release
d6c0f3e

First public implementation (more clear and correct than official Vulkan docs of the extension) of SPV_KHR_shader_invocation_reorder in HLSL, see our spirv_intrinsics headers in nbl/builtin/hlsl

Solves: microsoft/DirectXShaderCompiler#8226

What's Changed

New Features

  • Nabla can be consumed as a CMake package and has a target to make a redistributable SDK
  • CI now builds Nabla redistributables for Win32 which can be downloaded
  • Nabla Shader Compiler Boost.Wave preprocessor reworked, has a cache and extremely verbose runtime error logging
  • Some examples now compile runtime shaders in parallel and use pipeline cache
  • Mitsuba Scene Loader resurrected
  • Material Compiler v3 Frontend AST complete
  • Monte Carlo Sampling HLSL library with unit tests and benchmarks
  • CDF HLSL sampler
  • IES profile loader and viewer example
  • Alias Table Builder and HLSL sampler
  • Resampled Importance Sampling compatible BxDFs and Light Samplers
  • Statically Polymorphic HLSL Path Tracer
  • Example 40 a WIP Path Tracer
  • SER / Shader Invocation Reorder support
  • OBB calculation for Polygon Geometries
  • Vertex Welding for Polygon Geometries
  • Iridescent Fresnel (thin two-layer diffractive) implementation for BRDFs and BSDFs
  • Statically Polymorphic adaptive Simpson Quadrature in HLSL
  • octahedral mapping HLSL header
  • Cache for Owen Scrambled Sobol Sequence generation

Improvements

  • Far more performant and correct Spherical Triangle (Arvo 1997) and Spherical Rectangle (Urena 2013) sampling on the GPU
  • Experimental DXC and SPIR-V Tools legalization flags which reduce compile times by a factor of 10 via limiting unrolling before legalization
  • refactored the material_compiler3/CNodePool to have its functionality in CObjectPool
  • New Curve fit fast approximations for acos(x)/sin(x)
  • DXC and SPIR-V Tools Updates
  • experimental and draft ICPUScene resource
  • add getGeometryExclusiveCount to IMorphTargets
  • IRayTracingPipeline SBT validation
  • add interm_getImageViewInHierarchy to IAssetLoader
  • HLSL binary searches can now take stateful comparators (mostly to track accesses for CDF sampler)
  • reworked concepts/accessors for images
  • add some scalar-component-wise matrix operators
  • Owen Scrambled Sobol Sequence generation can be parallelized now

Bugfixes

  • bugs in BLAS validation
  • Commandbuffer tracking of resources used by a command if more than 32k shared pointers referenced
  • Smooth Normal recomputation for Polygon Geometries is now correct
  • Cleaner Example shutdowns in event of a failure
  • ICPUGeometryCollection::valid logic
  • rework exportForBLAS method into a CBLASExporter and IBLASExporter classes respectively for ICPUGeometryCollection and IGeometryCollection respectively

Deprecations / removals

  • old matrix4SIMD and matrix3x4SIMD classes
  • old core::quaternion now HLSL version only used
  • SStridedRange<BufferType> moved to core namespace
  • IBottomLevelAccelerationStructure::BUILD_FLAGS::ALLOW_DATA_ACCESS_BIT removed _BIT from enum name
  • ICPUTopLevelAccelerationStructure::getBuildRangeInfo removed
  • morton code HLSL and C++ reworked and unified

Full Changelog: v0.9.1.0...v0.10.0.0