Skip to content

Releases: RenderKit/ospray

OSPRay v3.2.0

23 Jul 23:27
Compare
Choose a tag to compare
  • 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 zeDevicedevice parameters are no longer supported
    • ispcrtContext and ispcrtDevicedevice parameters are no longer supported
  • Clarify the size of OSP_BOOL to be 1 byte
  • Fix 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
Click for more details and example images:

Braun KS 20 Coffee Maker by cekuhnen rendered with targetFrames=0 (white noise) and with targetFrames=1 (blue noise), and denoised respectively:

white noise blue noise
pixelSamples=8 BraunKS20_spp8_white BraunKS20_spp8_blue
denoised BraunKS20_spp8_white_denoised BraunKS20_spp8_blue_denoised

Contemporary Bathroom rendered with pixelSamples=16 and denoised with OSP_DENOISER_QUALITY_LOW, OSP_DENOISER_QUALITY_MEDIUM, and OSP_DENOISER_QUALITY_HIGH:

Bath_spp16 Bath_spp16_dn_low Bath_spp16_dn_med Bath_spp16_dn_high

OSPRay v3.1.0

22 Feb 23:49
Compare
Choose a tag to compare
  • 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)

OSPRay v3.0.0

18 Oct 15:39
Compare
Choose a tag to compare
  • 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 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 to OSP_TEXTURE_FILTER_LINEAR and OSP_VOLUME_FILTER_TRI[LINEAR|CUBIC] to OSP_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; use cpu
      • volume texture and isosurface geometry: volumetricModel; use OSPVolume volume
      • Transfer function vec2f valueRange; use box1f value
      • hdri and sun-sky lights: intensityQuantity OSP_INTENSITY_QUANTITY_RADIANCE
      • spot light with intensityDistribution: intensityQuantity other than OSP_INTENSITY_QUANTITY_SCALE

OSPRay v2.12.0

19 Jun 12:33
Compare
Choose a tag to compare
  • Support denoising on the GPU with OIDN 2.0, which is the new minimum
    version. The denoiser now uses HDR mode
  • New parameter maxScatteringEvents for the pathtracer which
    limits the number of non-specular (i.e., diffuse and glossy) bounces
  • Optimized dynamic load balancing for MPI devices
  • Fix crash when using small image resolution and many MPI ranks
  • Fix crash in pathtracer when lightSamples > 0 but there are no lights in the scene
  • Fix transparent shadows with too high minContribution setting
  • The new minimum version for ISPC is v1.20.0
  • Release binaries on Linux are built on Rocky 8

OSPRay v2.11.0

08 Mar 17:30
Compare
Choose a tag to compare
  • Support single ISPC target on Windows
  • OSPRay's superbuild can now be provided a CMake toolchain file for
    cross-compilation
  • Add support for double pumped NEON instruction on ARM64
  • Reduce the memory overhead of the mpiOffload device and resolve
    memory and MPI_Comm handle leaks
  • Support for volume rendering (and thus the dependency to Open VKL)
    can now be compile-time controlled via CMake variable
    OSPRAY_ENABLE_VOLUMES
  • OSPRay's MPI modules have been split up and renamed, the mpiOffload
    device is now in the mpi_offload module, while the mpiDistributed
    device is now in the mpi_distributed_cpu module
  • Add native support for spheres via Embree, which requires the
    positions and radius of the spheres to be interleaved in memory; if
    this is not the case, OSPRay will internally create a copy of the
    data
  • Fix dynamicScene flag on World and Group to influence BVH quality
    again: default is now "high", which should improve rendering
    performance, depending on the scene; and "low" when dynamicScene
    is enabled (improving BVH build performance)
  • Fix a crash in pathtracer when there are no lights
  • Fix a data corruption bug when setting string parameters for objects
    in the mpiOffload device
  • Various documentation fixes
  • OSPRay now has a new dependency, which is ISPC Run Time (ISPCRT) in
    minimum 1.19.0 version
  • Adapt to Embree v4.0.0 API changes, which is thus the new minimum
    version; additionally, the new minimum version for Open VKL is
    v1.3.2 and for ISPC v1.19.0
  • Removed support of MSVC14.0 (Visual Studio 2015) and the second
    generation Intel Xeon Phi processor (codename Knights Landing)

OSPRay v2.10.0

21 Jun 17:23
Compare
Choose a tag to compare
  • Add support for primitive, object, and instance ID buffers as
    framebuffer channels
  • Support face-varying attributes for Mesh and Subdivision geometry
  • Replace CMake variable OSPRAY_PIXELS_PER_JOB by
    OSPRAY_RENDER_TASK_SIZE; variance tracking for adaptive
    accumulation is now per task instead of per tile, allowing for more
    granular adaptation
  • OSPRay now requires minimum Open VKL v1.3.0 to bring the following
    improvements:
    • VDB volumes added support for contiguous data layouts, which can
      provide improved performance (nodesPackedDense,
      nodesPackedTile parameters)
    • Particle volumes are more memory efficiency and improved
      performance
  • OSPRay now requires minimum ISPC v1.18.0 for Open VKL and to include
    a fix for parallel dispatch of uniform function pointers
  • MPI Offload: resolve object life time tracking issue that would
    result in framebuffer and data info being release too early, leading
    to a crash
  • Fix crash with OpenMPI due to argument handling
  • Fix clipping when rays are parallel to clipping planes
  • Fix missing SDK headers from CPU and MPI module
  • Deprecated the vec2f valueRange parameter of the piecewiseLinear
    transfer function, use box1f value instead

OSPRay v2.9.0

15 Feb 22:46
Compare
Choose a tag to compare
  • Add support for multi-segment deformation motion blur for mesh
    geometry
  • OSPRay now requires minimum Open VKL v1.2.0 to bring the following
    improvements:
    • Structured regular volumes support for cell-centered data via
      the cellCentered parameter (vertex-centered remains the
      default)
    • Particle volumes ignore particles with zero radius
  • Add support for dynamic load balancing in MPI Offload device
  • Support for photometric lights (e.g., IES or EULUMDAT) also for
    sphere and quad lights. When setting intensityDistribution,
    other values for intensityQuantity than
    OSP_INTENSITY_QUANTITY_SCALE are deprecated
  • Changed CMake variables for enabling app categories:
    • OSPRAY_ENABLE_APPS_BENCHMARK replaces OSPRAY_APPS_BENCHMARK
    • OSPRAY_ENABLE_APPS_EXAMPLES replaces OSPRAY_APPS_EXAMPLES
    • OSPRAY_ENABLE_APPS_TUTORIALS replaces OSPRAY_APPS_TUTORIALS
    • OSPRAY_ENABLE_APPS_TESTING replaces OSPRAY_APPS_TESTING
  • Improve sampling of quad lights in the pathtracer (solid angle
    instead of area)
  • Instances can now have the group object rebound via a parameter
  • Fix leaking framebuffers in the MPI Offload device
  • Resolve possible race condition in assigning IDs to distributed
    objects in the MPI device
  • Move ISPC module to modules/ folder and renamed the module to
    cpu
  • Minimum version of rkcommon is 1.9.0, which brings the following
    improvements:
    • Add support for Intel oneAPI DPCPP compiler
    • Fix memory leak

OSPRay v2.8.0

04 Nov 13:42
Compare
Choose a tag to compare
  • Lights can be now part of OSPGroup and thus instanced like
    geometries and volumes and thus lights also support motion blur
    (with the path tracer)
  • Add cylinder light (with solid area sampling)
  • Add support for rolling shutter of cameras
  • Add support for quaternion motion blur for instance and camera to
    allow for smoothly interpolated rotations
  • Fix illumination from emissive quad meshes

OSPRay v2.7.1

30 Sep 14:48
Compare
Choose a tag to compare
  • Use Open VKL v1.0.1 to fix sporadic slowdowns when rendering
    structured regular and VDB volumes with the SciVis renderer
  • Fix CMake variables and logic
  • Fix crash when transferfunction.opacity = 0
  • Fix bug in MPI data-parallel rendering that caused rendering to hang
  • Workaround dynamic linking issue 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

OSPRay v2.7.0

16 Aug 21:17
Compare
Choose a tag to compare
  • 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 (default
      NaN), 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 closely 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
  • Fixed crash on exit when using the MPI device
  • Fixed 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 still assume "obj" like behavior
    for all material types
  • Deprecated the xfm parameter of the instance, use transform
    instead
  • Dependencies Google Benchmark, GoggleTest, and Snappy moved
    out-of-source to superbuild ExternalProjects