OSPRay 3.2.0

Intel OSPRay is an open source, scalable, and portable ray tracing engine for high-performance, high-fidelity visualization on Intel Architecture 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 is completely CPU-based, and runs on anything from laptops, to workstations, to compute nodes in HPC systems. OSPRay internally builds on top of Intel Embree and ISPC (Intel SPMD Program Compiler), and fully exploits modern instruction sets like Intel SSE4, AVX, AVX2, and AVX-512 to achieve high rendering performance, thus a CPU with support for at least SSE4.1 is required to run OSPRay.

Tags renderer
License Apache
State alpha

Recent Releases

3.2.007 Aug 2024 14:05 major feature: Sampling improvements: - Better performance (lower rendering time and faster convergence). - More pleasing blue noise enabled when the total number of frames to be accumulated is known in advance and set as the. `targetFrames` parameter at the framebuffer. - Note a maximum of 64k samples is supported. Improved `denoiser` image operation: - User-controlled quality levels via parameter `quality`. - Optionally denoise alpha channel as well, enabled via parameter `denoiseAlpha`. Support half-precision (16 bit float) texture formats. `OSP_TEXTURE_ RGBA16F RGB16F RA16F R16F ` and two-channel 32 bit float textures `OSP_TEXTURE_RA32F`. New parameter `limitIndirectLightSamples` for the `pathtracer` which limits the number of light samples after the first non-specular. (i.e., diffuse and glossy) bounce to at most one. Implement MIP Mapping for better texture filtering. If the additional memory per texture needed cannot be spared, applications can disable the generation of MIP maps with device parameter. `disableMipMapGeneration`. The backplate (background texture) is now always sampled at the pixel center and thus not blurred by the pixel filter anymore. Avoid color bleeding across eye-subimages when stereo rendering. Superbuild uses binary packages of Open VKL. Removed Intel ISPCRT dependency (ISPC compiler is still needed): - oneAPI Level Zero Loader is no longer necessary. - `zeContext` and `zeDevice`device parameters are no longer supported. - `ispcrtContext` and `ispcrtDevice`device parameters are no longer supported. Clarify the size of `OSP_BOOL` to be 1 byte. artifacts occasionally appearing with `gpu` device. The new minimum versions of dependencies: - Embree v4.3.3 (better error reporting). - Open Image Denoise v2.3 (better image quality with `HIGH` quality mode, added `FAST` quality mode). - rkcommon v1.14.0.
3.1.023 Feb 2024 16:25 major bugfix: 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, correlations. indirectly seen albedo and normal buffer. artifacts when using specular texture for Principled. for PixelFilter. - Parameter was ignored (always using the default Gaussian). - Avoid a shift/misalignment within the pixel for first sample. empty image on Windows when `focusDistance=0`. 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.
3.0.014 Jan 2024 19:55 minor feature: 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 new gpu device: Multiple volumes in the scene Clipping Motion blur Subdivision surfaces Progress reporting via ospGetProgress or canceling the frame via ospCancel Picking via ospPick Adaptive accumulation via OSP_FB_VARIANCE and varianceThreshold 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 OSPImageOperations for denoising or tone mapping 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 lin
3.0.0_beta_rc230 Sep 2023 12:05 minor feature: Experimental support for device data DEVICE DATA. For device data we now detect the case where the application shares that. With us and, by default, handle it by copying into an internal shared. Buffer, just like we do for host data. The copy, as implemented. Requires a corresponding change in ispcrt that is expected in the next. Release. In the interim the superbuild applies the needed commit as. Patch. The new OSPRAY_ALLOW_DEVICE_MEMORY environment flag turns on an. Experimental mode where OSPRay instead leaves the buffer alone and. Attempts to use the device data in place. The mode is experimental. Because in most cases the app will simply crash as most code in OSPRay. VKL and Embree do not yet support device data. Applications that know. Exactly what they are doing ie using it only for VKL structured volumes. With the upcoming VKL release, or RGB surface colors, can use it to. Avoid a copy. TESTING. The --own-SYCL argument to ospTestSuite causes the test app to. Emulate in situ use cases where the sycl enabled application owns the. Context and shares it with ospray. The new test_sharedusm_data test (only available when compiled with. SYCL) creates a simple volumetric data set and validates that usm. Host, shared, or device data sharing work as expected. Co-authored-by: Johannes Günther lt;johannes.guenther@intel.com gt;.
2.7.101 Oct 2021 13:45 minor feature: Use Open VKL v1.0.1 to sporadic slowdowns when rendering structured regular and VDB volumes with the SciVis renderer. CMake variables and logic. crash when transferfunction.opacity = 0. in MPI data-parallel rendering that caused rendering to hang. Workaround dynamic linking on Windows in MPI distributed rendering. Correctly initialize renderFrame progress. Improved performance of data-parallel rendering for scenes with a large number of regions. Expanded camera model support of the data-parallel renderer, data-parallel rendering can now use all the camera models supported by the SciVis renderer. Clarify documentation and error messages.
2.7.017 Aug 2021 09:25 minor feature: Add support for transformation and camera Motion Blur (with the path Tracer) via shutter parameter of the camera and motion.transform Array and time parameter of the instance and camera. OSPRay can now be built for ARM64 CPUs with NEON (e.g., Apple M1) Using the superbuild. Thus, new minimum versions are for ISPC 1.16.0, for Embree 3.13.1 and for rkcommon 1.7.0. OSPRay now requires minimum Open VKL v1.0.0 to bring the Following improvements: Configurable background values for all volume types (defaultNaN), defining region outside the volume domain Better default sampling rate for scaled VDB volumes, improved Robustness Structured regular volumes now support tricubic filtering and More accurate gradient computations as well as more robust Isosurfaces . Configurable background values for all volume types (defaultNaN), defining region outside the volume domain. Better default sampling rate for scaled VDB volumes, improved Robustness. Structured regular volumes now support tricubic filtering and More accurate gradient computations as well as more robust Isosurfaces. The multidevice module contains a new OSPRay device implementation That delegates work to any number of subdevices. This is an Experimental feature in this release but we invite feedback. SciVis Renderer now ignores normal/albedo/depth hits on surfaces That are fully transmissive (material d = 0). Changed the behavior of background rendering in SciVis renderer to More ly reflect that of the path tracer: Background hits are Rendered in background color in the albedo buffer and black in the Normal buffer. The SciVis renderer does not compute depth of field (DoF) anymore, as this effect does not align with the SciVis renderer definition And exposed artifacts. Crash on exit when using the MPI device. Rendering of depth buffer in the example application. The first argument to material constructor ospNewMaterial, i.e.,renderer_type, is now deprecated and will be removed in a future Release. AO and SciVis renderers
2.6.021 May 2021 08:05 minor feature: Added new intensityQuantity type OSP_INTENSITY_QUANTITY_SCALE For the hdri and sunSky light source. For the future this is the Only supported quantity for these lights, the valueOSP_INTENSITY_QUANTITY_RADIANCE is deprecated. WhenOSP_INTENSITY_QUANTITY_SCALE is used for sunSky the default Value of intensity is 0.025 to match the old behaviour. The MPI module is included in the releases packages. AnMPICH-ABI compatible build is provided For Linux that can be run with the Intel oneAPI HPC Toolki, MPICH, And other MPICH-ABI compatible MPI distributions. The Windows Release is built against MPI provided in the Intel oneAPI HPC Toolkit. OSPRay now requires minimum Open VKL v0.13.0 to bring the Following improvements: Support half precision float (fp16) voxel data in strutured Volumes (regular and spherical) and VDB volume Supporting tricubic filtering via VKL_FILTER_TRICUBIC filter For VDB volume Artifacts for isosurfaces of unstructured volumes Performance improvements for isosurfaces when multiple Isovalues are selected Better, adaptive sampling of AMR volumes . Support half precision float (fp16) voxel data in strutured Volumes (regular and spherical) and VDB volume. Supporting tricubic filtering via VKL_FILTER_TRICUBIC filter For VDB volume. Artifacts for isosurfaces of unstructured volumes. Performance improvements for isosurfaces when multiple Isovalues are selected. Better, adaptive sampling of AMR volumes. The mpiOffload and mpiDistributed devices now support picking. Picking in the distributed device will return the globally t Object on the rank that owns that object. Other ranks will report no hit. Messages d from ISPC code use the same reporting path as the C++ Code, thus now the whole OSPRay console output can be consistently Filtered with log levels. Open VKL and Embree internal errors are now correctly mapped to Their corresponding OSPRay errors. Behavior of committing the framebuffer in distributed rendering to match that of local rendering.
2.5.009 Feb 2021 17:25 minor feature: Add native support for cones or cylinders with curves geometry of type OSP_DISJOINT, requiring minimum version 3.12.0 of Embree. Replaced OSPRay's internal implementation of round linear curves by Embree's native implementation. Internal surfaces at joints are now correctly removed, leading to higher quality renderings with transparency, at the cost of intersection performance. SciVis renderer improvements: Colored transparency, colored shadows Light sources are visible including HDRI Light environment map . Colored transparency, colored shadows. Light sources are visible including HDRI Light environment map. The MPI module is now distributed as part of OSPRay in the modules directory The socket-based communication layer has been removed . The socket-based communication layer has been removed. Add intensityQuantity parameter to light sources to control the interpretation and convertion of the intensity into a radiative quantity. OSPRay now requires minimum Open VKL v0.12.0 to bring the following improvements: Better default sampling rate for scaled volumes, improving performance Higher robustness for axis-aligned rays . Better default sampling rate for scaled volumes, improving performance. Higher robustness for axis-aligned rays. Removed limit on the number of volumes (both overlapped and separate) that a ray can intersect while rendering. Now it is limited by available memory only. Move to OIDN v1.3.0 to bring the following improvements: Improved denoising quality (sharpness of fine details, fewer noisy artifacts) Slightly improved performance and lower memory consumption . Improved denoising quality (sharpness of fine details, fewer noisy artifacts). Slightly improved performance and lower memory consumption. Both geometric and volumetric models can now have their child geometry/volume objects rebound using an object parameter. light leaking artifacts at poles of HDRI (and Sun-Sky) light. Add sRGB conversion to ospExamples such that the color of the widget for ba
2.4.003 Oct 2020 03:17 minor feature: The pathtracer optionally allows for alpha blending even if the background is seen through refractive objects like glass, by enabling backgroundRefraction. OSPRay now requires minimum Open VKL v0.11.0 to bring the following improvements: Improved rendering performance of VDB volumes Added support for configurable iterator depth via themaxIteratorDepth parameters for unstructured and particle volumes, improved performance Added support for filter modes for structured volumes (regular and spherical) . Improved rendering performance of VDB volumes. Added support for configurable iterator depth via themaxIteratorDepth parameters for unstructured and particle volumes, improved performance. Added support for filter modes for structured volumes (regular and spherical). Expose parameter horizonExtension of Sun-sky light, which extends the sky dome by stretching the horizon over the lower hemisphere. Optimize handling of geometry lights by the pathtracer. The optional denoiser image operation now respects frame cancellation, requiring Intel Open Image Denoise with minimum version 1.2.3. normals of (transformed) isosurfaces. Robust calculation of normals of boxes geometry. Clipping geometry is now working correctly with map_maxDepth renderer parameter. Using materials in a renderer with a mismatched renderer_type no longer causes crashes while rendering.
2.3.015 Sep 2020 16:45 minor feature: Re-add SciVis renderer features (the previous version is still available as ao renderer) Lights are regarded, and thus the OBJ material terms ks andns have effect again Hard shadows are enabled via the shadows parameter The control of ambient occlusion changed: The aoIntensity parameter is replaced by the combined intensity of ambient lights in the World The effect range is controlled via aoDistance . Lights are regarded, and thus the OBJ material terms ks andns have effect again. Hard shadows are enabled via the shadows parameter. The control of ambient occlusion changed: The aoIntensity parameter is replaced by the combined intensity of ambient lights in the World The effect range is controlled via aoDistance . The aoIntensity parameter is replaced by the combined intensity of ambient lights in the World. The effect range is controlled via aoDistance. Added support for data arrays with a stride between voxels in volumes. Application thread waiting for finished image via ospWait participates in rendering, increasing CPU utilization; via rkcommon v1.5.0. Added ospray_cpp compatibility headers for C++ wrappers to understand rkcommon and glm short vector types For rkcommon, include ospray/ospray_cpp/ext/rkcommon.h For glm, include ospray/ospray_cpp/ext/glm.h Note in debuilds some compilers will not optimize out type trait definitions. This will require users to manually instantiate the glm definitions in one translation unit within the application using#define OSPRAY_GLM_DEFINITIONS before including ext/glm.h: seeospTutorialGLM as an example . For rkcommon, include ospray/ospray_cpp/ext/rkcommon.h. For glm, include ospray/ospray_cpp/ext/glm.h. Note in debuilds some compilers will not optimize out type trait definitions. This will require users to manually instantiate the glm definitions in one translation unit within the application using#define OSPRAY_GLM_DEFINITIONS before including ext/glm.h: seeospTutorialGLM as an example. Changed parameters to volume texture:
2.2.010 Jul 2020 17:05 minor feature: Support for texture transformation in SciVis OBJ material. Add transformations for volume textures; volume texture lookups are Now with local object coordinates (not world coordinates anymore). Changed behavior: if solely a texture is given, then the default Value of the corresponding parameter is not multiplied. Support for better antialiasing using a set of different pixel Filters (e.g, box, Gaussian...). The size of the pixel filter is Defined by the used filter type. Previously OSPRay implicitly used a Box filter with a size of 1, for better results the default filter is now OSP_PIXELFILTER_GAUSS. Support stereo3d mode for panoramic camera. Add new camera stereoMode OSP_STEREO_TOP_BOTTOM (with left eye at top half of the image). Added support for random light sampling to the pathtracer, the Number of sampled light sources per path vertex is defined by thelightSamples parameter. Support ring light by extending spot with innerRadius. Nonphysical behavior of the spot and sphere light sources For area lights (when radius 0) surfaces to the light Will be darker The spot now has an angular falloff, such that a disk light is a proper lambertian area light, which leads to darker regions Perpendicular to its direction (thus barely visible with a Typically small openingAngle) . For area lights (when radius 0) surfaces to the light Will be darker. The spot now has an angular falloff, such that a disk light is a proper lambertian area light, which leads to darker regions Perpendicular to its direction (thus barely visible with a Typically small openingAngle). Support for Open VKL v0.10.0 and its new sampler object API, thus This is now the required minimum version. Added support for particle and VDB volumes. Move from ospcommon to rkcommon v1.4.2. New minimum ISPC version is 1.10.0. Status and error callbacks now support a user pointer. Enabled C++ wrappers (ospray_cpp) to work with non-rkcommon math Types Note that while the C API remains the same, the C++ wrappers Wil
2.1.126 May 2020 20:45 minor feature: CarPaint obeys coat weight parameter. Correct depth buffer values with SciVis renderer. Adaptions to Embree v3.10.0. The Linux binary release finds ospcommon again.
2.1.010 Apr 2020 16:45 minor feature: New clipping geometries feature that allows clipping any scene (geometry and volumes); all OSPRay geometry types can by used as. clipping geometry Inverted clipping is supported via new invertNormals parameter of GeometricModel Currently there is a upper limit (64) of how many clipping geometries can be nested When clipping with curves geometry (any basis except linear) some rendering artifacts may appear . Inverted clipping is supported via new invertNormals parameter of GeometricModel. Currently there is a upper limit (64) of how many clipping geometries can be nested. When clipping with curves geometry (any basis except linear) some rendering artifacts may appear. New plane geometry defined via plane equation and optional bounding box. Sun-sky light based on physical model of Hošek-Wilkie. Support for photometric lights (e.g. IES or EULUMDAT). Add new ospGetTaskDuration API call to query execution time of asynchronous tasks. Support for 16bit (unsigned short) textures. Add static cpp::Device::current method as a C++ wrapper equivalent to ospGetCurrentDevice. Generalized cpp::Device parameter setting to match other handle types. Passing NULL to ospRelease is not reported as error anymore. computation of strides for OSPData. transparency in scivis renderer. Add missing C++ wrapper for ospGetVariance. Proper demonstration of ospGetVariance in ospTutorialAsync. handling of --osp:device-params to process and set all passed arguments first before committing the device, to ensure it is committed in a valid state. Object factory functions are now registered during module initialization via the appropriate registerType function. with OSPRay ignoring tasking system thread count settings. where OSPRay always loaded the ISPC module, even if not required. OSPRay now requires minimum Open VKL v0.9.0.
2.0.108 Feb 2020 17:25 minor feature: Where Embree user-defined geometries were not indexed correctly in the scene, which now requires Embree v3.8.0+. Crash when the path tracer encounters geometric models that do not Have a material. Crash when some path tracer materials generated NULL bsdfs. Where ospGetBounds returned incorrect values. Missing symbol in denoiser module. Missing symbol exports on Windows for all OSPRay built modules. Add the option to specify a single color for geometric models. The scivis renderer now respects the opacity component of color on Geometric models. Various inconsistent handling of frame buffer alpha between renderers. OspGetCurrentDevice now increments the ref count of the returnedOSPDevice handle, so applications will need to release the handle when Finished by using ospDeviceRelease accordingly. Added denoiser to ospExamples app. Added module_mpi to superbuild. The superbuild now will emit a CMake error when using any 32-bit CMake Generator, as 32-bit builds are not supported.
2.0.020 Jan 2020 21:45 minor feature: New major revision of OSPRay brings API breaking improvements over v1.x. See doc/ospray2_porting_guide.md for a deeper description of Migrating from v1.x to v2.0 and doc/api.md for the latest API Documentation OspRenderFrame now takes all participating objects as Function parameters instead of setting some as renderer params OspRenderFrame is now asynchronous, where the task is managed Through a returned OSPFuture handle The heirarchy of objets in a scene are now more granular to Aid in scene construction flexibility and reduce potential Object duplication Type-specific parameter setting functions have been consolidated Into a single ospSetParam API call C++ wrappers found in ospray_cpp.h now automatically track Handle lifetimes, therefore applications using them do not need to use ospRelease (or the new ospRetain) with them: see Usage example in apps/tutorials/ospTutorial.cpp Unused parameters are reported as status messages whenlogLevel is = 1 (most easily set by enabling OSPRay deon Initialization) . OspRenderFrame now takes all participating objects as Function parameters instead of setting some as renderer params. OspRenderFrame is now asynchronous, where the task is managed Through a returned OSPFuture handle. The heirarchy of objets in a scene are now more granular to Aid in scene construction flexibility and reduce potential Object duplication. Type-specific parameter setting functions have been consolidated Into a single ospSetParam API call. C++ wrappers found in ospray_cpp.h now automatically track Handle lifetimes, therefore applications using them do not need to use ospRelease (or the new ospRetain) with them: see Usage example in apps/tutorials/ospTutorial.cpp. Unused parameters are reported as status messages whenlogLevel is = 1 (most easily set by enabling OSPRay deon Initialization). New utility library which adds functions to help with new API Migration and reduction of boilerplate code Use ospray_util.h to access these additional functions All u
2.0.0-alpha02 Oct 2019 08:25 minor feature: New major revision of OSPRay brings API breaking improvements over v1.x. See doc/ospray2_porting_guide.md for a deeper description of Migrating from v1.x to v2.0 and doc/api.md for the latest API Documentation OspRenderFrame now takes all participating objects as Function parameters instead of setting some as renderer params OspRenderFrame is now asynchronous, where the task is managed Through a returned OSPFuture handle The heirarchy of objets in a scene are now more granular to Aid in scene construction flexibility and reduce potential Object duplication Type-specific parameter setting functions have been consolidated Into a single ospSetParam API call C++ wrappers found in ospray_cpp.h now automatically track Handle lifetimes, therefore applications using them do not need to use ospRelease (or the new ospRetain) with them: see Usage example in apps/tutorials/ospTutorial.cpp Unused parameters are reported as status messages whenlogLevel is = 1 (most easily set by enabling OSPRay deon Initialization) . OspRenderFrame now takes all participating objects as Function parameters instead of setting some as renderer params. OspRenderFrame is now asynchronous, where the task is managed Through a returned OSPFuture handle. The heirarchy of objets in a scene are now more granular to Aid in scene construction flexibility and reduce potential Object duplication. Type-specific parameter setting functions have been consolidated Into a single ospSetParam API call. C++ wrappers found in ospray_cpp.h now automatically track Handle lifetimes, therefore applications using them do not need to use ospRelease (or the new ospRetain) with them: see Usage example in apps/tutorials/ospTutorial.cpp. Unused parameters are reported as status messages whenlogLevel is = 1 (most easily set by enabling OSPRay deon Initialization). New utility library which adds functions to help with new API. Migration and reduction of boilerplate code Use ospray_util.h to access these additional functions Al
1.8.524 Sep 2019 23:24 minor feature: Fix float precision cornercase (NaNs) in sphere light sampling Fix CMake bug that assumed .git was a directory, which is not true when using OSPRay as a git submodule Fix CMake warning Fix DLL_EXPORT issue with ospray_testing helper library on Windows