Intel® Open Volume Kernel Library (Intel® Open VKL) is a collection of high-performance volume computation kernels, developed at Intel. The target users of Open VKL are graphics application engineers who want to improve the performance of their volume rendering applications by leveraging Open VKL’s performance-optimized kernels, which include volume traversal and sampling functionality for a variety of volumetric data formats. The kernels are optimized for the latest Intel® processors with support for SSE, AVX, AVX2, and AVX-512 instructions. Open VKL is part of the Intel® oneAPI Rendering Toolkit and is released under the permissive Apache 2.0 license.
Open VKL provides a C API, and also supports applications written with the Intel® SPMD Program Compiler (ISPC) by also providing an ISPC interface to the core volume algorithms. This makes it possible to write a renderer in ISPC that automatically vectorizes and leverages SSE, AVX, AVX2, and AVX-512 instructions. ISPC also supports runtime code selection, thus ISPC will select the best code path for your application.
In addition to the volume kernels, Open VKL provides tutorials and example renderers to demonstrate how to best use the Open VKL API.
Open VKL 0.9.0 (alpha)
- Added support for VDB sparse structured volumes (
vdb_utillibrary to simplify instantiation of VDB volumes, and support loading of .vdb files using OpenVDB
VKLObserverand associated APIs, which may used by volume types to pass information back to the application
LeafNodeAccessobserver is provided for VDB volumes to support on-demand loading of leaf nodes
- Structured regular volumes:
- Up to 6x performance improvement for scalar iterator initialization
- Up to 2x performance improvement for scalar iterator iteration
- General improvements to the CMake Superbuild for building Open VKL and all associated dependencies
- Allowing instantiation of ISPC driver for any supported SIMD width (in addition to the default automatically selected width)
- Volume type names are now camelCase (legacy snake_case type names are deprecated), impacting
flushDenormalsdriver mode by default
- Aligning public
- Fixed bug in
vklExampleswhich could lead to improper rendering on macOS Catalina
- Fixed bug in unstructured volume interval iterator which could lead to errors with some combinations of lane masks
- Now providing binary releases for Linux, macOS, and Windows
Open VKL 0.8.0 (alpha)
- Added support for structured volumes on spherical grids (
- Structured regular volumes:
- Up to 8x performance improvement for scalar (single-wide) sampling
- Fixed hit iterator bug which could lead to isosurfacing artifacts
- Unstructured volumes:
- Up to 4x performance improvement for scalar (single-wide) sampling
- Improved interval iterator implementation for more efficient space skipping and tighter value bounds on returned intervals
- Now using Embree for BVH builds for faster build times / volume commits
- AMR volumes:
cellWidth, and clarified API documentation
vklGetValueRange()API for querying volume value ranges
- Added new driver parameters, APIs, and environment variables allowing user control of log levels, log / error output redirection, number of threads, and other options
vklIterateInterval[4,8,16]()calls now only populate hit / interval data for active lanes
VKLDataTypeenum values for better forward compatibility
- ISPC-side hit and interval iterator objects must now be declared
- More flexible ISA build configuration through
OPENVKL_ISA_*CMake build options
- Minimum ospcommon version is now 1.1.0
Open VKL 0.7.0 (alpha)
- Initial public alpha release, with support for structured, unstructured, and AMR volumes.
Support and Contact
Open VKL is under active development, and though we do our best to guarantee stable release versions a certain number of bugs, as-yet-missing features, inconsistencies, or any other issues are still possible. Should you find any such issues please report them immediately via Open VKL’s GitHub Issue Tracker (or, if you should happen to have a fix for it, you can also send us a pull request); you may also contact us via email at firstname.lastname@example.org.
Join our mailing list to receive release announcements and major news regarding Open VKL.