The Open, Scalable, and Portable Ray Tracing Engine
OSPRay Overview
Intel® OSPRay is an open source, scalable, and portable ray tracing engine for high-performance, high-fidelity visualization on Intel Architecture CPUs, Intel Xe GPUs, and ARM64 CPUs. OSPRay is part of the Intel oneAPI Rendering Toolkit and is released under the permissive Apache 2.0 license.
The purpose of OSPRay is to provide an open, powerful, and easy-to-use rendering library that allows one to easily build applications that use ray tracing based rendering for interactive applications (including both surface- and volume-based visualizations). OSPRay runs on anything from laptops, to workstations, to compute nodes in HPC systems.
OSPRay internally builds on top of Intel Embree, Intel Open VKL, and Intel Open Image Denoise. The CPU implementation is based on Intel ISPC (Implicit SPMD Program Compiler) and fully exploits modern instruction sets like Intel SSE4, AVX, AVX2, AVX-512 and NEON to achieve high rendering performance. Hence, a CPU with support for at least SSE4.1 is required to run OSPRay on x86_64 architectures, or a CPU with support for NEON is required to run OSPRay on ARM64 architectures.
OSPRay’s GPU implementation (beta status) is based on the SYCL cross-platform programming language implemented by Intel oneAPI Data Parallel C++ (DPC++) and currently supports Intel Arc™ GPUs on Linux and Windows, and Intel Data Center GPU Flex and Max Series on Linux, exploiting ray tracing hardware support.
OSPRay Support and Contact
OSPRay 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. For any such requests or findings please use OSPRay’s GitHub Issue Tracker (or, if you should happen to have a fix for it, you can also send us a pull request).
To receive release announcements simply “Watch” the OSPRay repository on GitHub.
Changes in v3.1.0:
- Principled and Luminous materials support emissive textures
- Add native support for disc and oriented disc geometry
- Add support for mirror repeat and clamp to edge texture wrap modes
- GPU device now also supports motion blur
- Improve noise in reflections of ThinGlass
- Improve adaptive accumulation: working with GPU, fix correlations
- Fix indirectly seen albedo and normal buffer
- Fix artifacts when using specular texture for Principled
- Fixes for PixelFilter
- Parameter was ignored (always using the default Gaussian)
- Avoid a shift/misalignment within the pixel for first sample
- Fix empty image on Windows when
focusDistance=0
- Fix missing SDK headers for
ISPCDevice*
- The new minimum versions of dependencies:
- Embree v4.3.1
- Open VKL v2.0.1
- Open Image Denoise v2.2 (better quality with fine details, support AArch64 CPU on Linux)
- ISPCRT v1.23.0 (uses environment variable
ISPCRT_GPU_DRIVER
to select GPU to run on when multiple (i)GPUs are present) - rkcommon v1.13.0 (fixes crash using GPU and emissive geometry)
Changes in v3.0.0:
- Beta support for Intel Xe GPUs (Intel Arc™ GPUs a Intel Data Center
GPU Flex and Max Series), exploiting ray tracing hardware support.
Implementation is based on the SYCL cross-platform programming
language implemented by Intel
oneAPI Data Parallel C++ (DPC++).
Note that the following features are not implemented yet or are not working correctly on the newgpu
device:- Multiple volumes in the scene
- Clipping
- Motion blur
- Subdivision surfaces
- Progress reporting via
ospGetProgress
or canceling the frame viaospCancel
- Picking via
ospPick
- Adaptive accumulation via
OSP_FB_VARIANCE
andvarianceThreshold
- Framebuffer channels
OSP_FB_ID_*
(id buffers) - Experimental support for shared device-only data, works only for
structuredRegular
volume - Further known issues
- Some delay on start-up or when changing the scene, because kernel
code is JIT compiled and specialized. JIT compilation can be cached by
setting environment variable
SYCL_CACHE_PERSISTENT=1
, then consecutive starts or rendering the same scene configuration is without delay - For some combination of compiler, GPU driver and scene the rendered images might show artifacts (e.g., vertical lines or small blocks)
- Multidevice does not support
OSPImageOperation
s for denoising or tone mapping
- Some delay on start-up or when changing the scene, because kernel
code is JIT compiled and specialized. JIT compilation can be cached by
setting environment variable
- Add implicit indexing for
mesh
geometry - Add support for transferring ownership of temporary buffers:
ospNewSharedData
accepts an optional deleter callback - Optimizations for MPI module, supported by new integrated performance tracing framework
- Optimize
scivis
gradient shading - Main thread does not set FTZ/DAZ anymore for denormals handling
- Compute intersection epsilon for Mesh to avoid rendering artifacts due to self-intersection
- Fix energy conservation of Pricipled material under certain parameter combinations
- Fix
denoiser
to not wipe the alpha channel - Fix crash in HDRI light
- Fix link order for Debug build on Windows
- The new minimum versions of dependencies:
- Embree v4.3.0
- Open VKL v2.0.0
- Open Image Denoise v2.1.0
- ISPC v1.21.1
- rkcommon v1.12.0
- Breaking API changes
- Renamed
OSP_TEXTURE_FILTER_BILINEAR
toOSP_TEXTURE_FILTER_LINEAR
andOSP_VOLUME_FILTER_TRI[LINEAR|CUBIC]
toOSP_VOLUME_FILTER_[LINEAR|CUBIC]
- Most enums now use storage type
uint32
gridSpacing
of spherical regular volume defaults to full sphere- Remove deprecated parameters and API calls
- error callback signatures without user pointer
- first argument of
ospNewMaterial
- module name
ispc
; usecpu
volume
texture andisosurface
geometry:volumetricModel
; useOSPVolume volume
- Transfer function
vec2f valueRange
; usebox1f value
hdri
andsun-sky
lights:intensityQuantity
OSP_INTENSITY_QUANTITY_RADIANCE
spot
light withintensityDistribution
:intensityQuantity
other thanOSP_INTENSITY_QUANTITY_SCALE
- Renamed
For the complete history of changes have a look at the CHANGELOG.