ANARI-SDK v0.16.0 — Highlights
🆕 New helide_gpu device
The headline addition is a new GPU-backed reference device (helide_gpu) alongside the existing CPU helide. It shares the same reference-renderer semantics but exercises the GPU execution path, giving implementers and downstream apps a second built-in device to validate against. This came with substantial supporting work in the helium base layer:
- Double-buffered deferred commits and a reworked TaskQueue (FIFO worker-side enqueue with growable storage) for more robust cross-thread commit handling.
- Worker-thread gpu_enqueue_method now runs inline when already on the worker thread, and a macOS commit-buffer deadlock was fixed.
- Object parameters are now snapshotted at anariCommitParameters() time, matching spec expectations for commit semantics.
🧪 CTS (Conformance Test Suite) overhaul
Major rework of the conformance test suite (#359):
- Reports are now generated in C++ (text + HTML); the Python reporting layer was reduced to PDF-only.
- Added ray/primitive intersection edge-case tests.
- CTS can now pass custom, device-agnostic renderer parameters.
- Test coverage and code generation were synced to the current spec.
📐 Spec & JSON / code-gen updates
- New extension KHR_SAMPLER_IMAGExD_CLAMP_TO_BORDER added.
- wrapMode1 renamed to wrapMode for image1D (per spec) — note: potential breaking change for consumers reading that parameter name.
- Correct REPEAT-mode coordinate wrapping for Image1D/2D/3D samplers.
- code_gen re-synced to the current spec (typo fixes, updated queries; JSON null now returns nullptr).
- Removed primitive.id support from helide/helide_gpu.
🎨 helide rendering improvements
- Implicit aspect ratio support in both helide and helide_gpu.
- Fixed incorrect sRGB color-data handling on input.
- Support for the visible parameter on volume and surface objects.
- New debug render mode that skips ray intersection.
- Geometry commit priority adjusted so isosurface is handled correctly after fields; implicit curve index fix.
🖥️ Platform & integration fixes
- High-DPI (HiDPI) support on macOS, plus a configurable high-DPI flag and custom flags for SDL windows.
- Fixed a crash on window resize (stale frame contents / format mismatc
- Fixed Embree alignment error via alignas on the Ray struct.
- ANARI library lifetime fixes — libraries are unloaded/deleted as Librd until after destruction, resolving lifetime issues in applications.
🔌 hdAnari (Hydra plugin)
- Updated to OpenUSD 26.05 (and build fixes for 25.11).
- Migrated the MDL plugin from the Ndr to the Sdr API.
📚 Docs & housekeeping
- Added helium code documentation comments and agent-context files across several libraries.
- Generic helium::Array improvements: 1D attribute helpers moved to thew access the data modified-timestamp.
- README fixes (typos, broken links, python-bindings notes), copyright date updates.
Merged PRs
- Add clamp to border extension by @tarcila in #329
- README: fix typos and broken links by @lucas-givord in #330
- Apply correct coordinate wrapping for REPEAT mode in Image1D/2D/3D by @sankhesh in #335
- add render mode that doesn't intersect rays for debugging purposes by @jeffamstutz in #336
- v0.15.0 codegen build fix by @kvankooten in #337
- support visible parameter on volume and surface objects by @jeffamstutz in #338
- Fixed size and format crash when resized window maps old frame contents by @kvankooten in #340
- add high DPI flag for SDL window, allow custom flags from downstream by @jeffamstutz in #341
- Fix HDPI support on MacOS by @tarcila in #342
- Add Claude docs and libhelium code documentation by @jeffamstutz in #343
- move 1D attribute helpers to base Array for more generic consumption by @jeffamstutz in #345
- fix incorrect handling of input sRGB color data by @jeffamstutz in #346
- double buffer deferred commits in helium, more robust helide frame handling by @jeffamstutz in #347
- add new helide_gpu device by @jeffamstutz in #348
- helium + helide_gpu fixes by @jeffamstutz in #349
- implement implicit aspect ratio in helide + helide_gpu devices by @jeffamstutz in #350
- update hdAnari to OpenUSD 26.05 by @jeffamstutz in #351
- fix: return nullptr for JSON null values in generate_queries by @sankhesh in #352
- convert to generic agent context files by @jeffamstutz in #354
- Fix Embree alignment error by adding alignas to the Ray struct by @sankhesh in #355
- fixed stb warnings by @ingowald in #353
- Update to latest openusd by @tarcila in #356
- Fix ANARIlibrary release by @tarcila in #357
- fix ANARILibrary lifetime issues in applications by @jeffamstutz in #358
- CTS overhaul by @jeffamstutz in #359
- adjust geometry commit priority to account for 'isosurface' after fields by @jeffamstutz in #360
- Fix curve with implicit index by @johguenther in #361
- cts: Add ray/primitive intersection edge-case tests by @tarcila in #362
- cts: Add html report generation from
runoutput by @tarcila in #363 - Sync code_gen to current spec, fix typos, adapt CTS coverage, tests and devices by @johguenther in #364
- helium: misc fixes by @jeffamstutz in #365
New Contributors
- @lucas-givord made their first contribution in #330
- @sankhesh made their first contribution in #335
Full Changelog: v0.15.0...v0.16.0