News

Khronos unleashes Anari on the rendering community

Scene graphs will now have first-class citizenship.

Jon Peddie

The Khronos Group has completed the Anari 1.0 open standard, a 3D rendering engine API, with implementations from AMD, Intel, and Nvidia, along with an open-source SDK. Anari simplifies application development, particularly in scientific visualization, by providing high-level functionality without intricate low-level graphics code. It supports importing glTF physically based rendering materials and has gained widespread adoption. Anari’s development involved community feedback, resulting in improvements. It enables the creation of stunning imagery without proprietary APIs and facilitates interactivity for exploratory visualization. Anari SDK aids developers with example applications and implementer support. The Anari working group’s efforts have led to a remarkable and versatile open-standard API and associated tools.

Anari
Anari with Nvidia VisRTX back-end. (Source: “San Miguel Scene” © Guillermo M. Leal LLaguno)

The Khronos Group has officially announced completion of the Anari 1.0 open standard, a cross-platform 3D rendering engine API. This milestone comes with multiple implementations from prominent tech companies, namely AMD, Intel, and Nvidia, along with an open-source software development kit (SDK) from Khronos. We wrote about the provisional Anari development in September 2021, and the task force has been working on it diligently ever since. It is quite an elegant piece of work.

Anari represents a significant advancement in simplifying application development, particularly in domains like scientific visualization. By offering high-level functionality, it allows developers to construct in-memory scene representations for rendering, without the need for intricate low-level graphics code. Moreover, it enables the utilization of any 3D rendering engine that supports the Anari API. The development of Anari 1.0 was done openly, incorporating valuable feedback from the community. Notably, the specification includes support for importing glTF physically based rendering (PBR) materials.

Anari
Anari 1.0 launch aspects. (Source: Khronos)

Anari has already garnered widespread adoption in scientific visualization applications and is poised to be used by various other applications requiring portable access to back-end rendering engines capable of delivering sophisticated 3D capabilities, including ray tracing. Khronos encourages feedback from the developer community on Anari’s GitHub page.

Being the industry’s first platform-independent 3D rendering engine API, Anari enjoys strong support from scientific visualization developers. Major open-source applications, such as VMD, VTK/ParaView, and VisIt, have integrated Anari. The implementations from AMD, Intel, and Nvidia facilitate access to their respective rendering engines—Radeon ProRender, OSPRay, and VisRTX. Additionally, there are proof-of-concept add-ons for Blender and Nvidia’s Anari-USD device library, allowing Anari applications to generate USD output for use on the Omniverse platform.

Anari Graph
Anari development stack. (Source: Khronos)

Jeff Amstutz, the Anari working group chair and senior software engineer at Nvidia, acknowledged the historical need for custom renderers in visualization applications. However, the fast-paced evolution of rendering algorithms and hardware, coupled with low-level GPU APIs, has made it challenging for domain experts to keep up. Anari effectively addresses this by simplifying the development of portable 3D visualization applications that can leverage back-end engines for state-of-the-art rendering. Nvidia is fully committed to supporting Anari on its VisRTX and VisGL renderers, while integrating it into Omniverse.

Anari, designed as a C99 API with C++ type safe wrappers, enables the construction of in-memory hierarchical object trees representing complete scenes for individual frames, encompassing 3D surface geometry and volumetric data. Rendering engines can expose innovation through extensions, access asynchronous scene updates, and utilize zero-copy data arrays to achieve low frame latency. This approach allows for the creation of stunning imagery without the need for proprietary APIs, all while facilitating the interactivity required for exploratory visualization.

Anari
Anari scene representation. (Source: Khronos)

During the development of Anari 1.0, draft specifications were publicly accessible and substantial feedback from the community was integrated, leading to improvements in various aspects. These include enhancements to the object interface, robust error handling through guaranteed API stream stability, improved runtime feature queries, directly mapped array parameters, enhanced volume shading, and the ability to import glTF PBR materials.

To aid developers in exploring and using the Anari API, an open-source Anari SDK has been provided. It includes example applications, like an interactive viewer showcasing Anari concepts, as well as loadable layers such as a debug layer for API stream validation and a layer for API call tracing and replay. For Anari implementers, the SDK includes back-end layers for handling parameters and object lifetime, a Python-based Conformance Test Suite, and the Helide Anari sample implementation, illustrating API implementation choices and demonstrating how Anari implementations can integrate with the SDK.

What do we think?
The Anari working group at Khronos has done an amazing job of pulling together and coupling with major visualization tools and libraries including Intel’s OSPRay, Nvidia’s Omniverse, Blender, and many more. They’ve added an implementation helper called Helium, and derivatives cleverly named Helide—Helium plus anything else. The tool is infinitely extendable and extensible; it really is a work of art and is available now.