Releases: RenderKit/ospray
Releases · RenderKit/ospray
OSPRay v3.2.0
- 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
- User-controlled quality levels via parameter
- Support half-precision (16 bit float) texture formats
OSP_TEXTURE_[RGBA16F|RGB16F|RA16F|R16F]
and two-channel 32 bit float texturesOSP_TEXTURE_RA32F
- New parameter
limitIndirectLightSamples
for thepathtracer
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
andzeDevice
device parameters are no longer supportedispcrtContext
andispcrtDevice
device 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, addedFAST
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 |
||
denoised |
Contemporary Bathroom rendered with pixelSamples=16
and denoised with OSP_DENOISER_QUALITY_LOW
, OSP_DENOISER_QUALITY_MEDIUM
, and OSP_DENOISER_QUALITY_HIGH
:
OSPRay 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)
OSPRay 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
OSPRay v2.12.0
- Support denoising on the GPU with OIDN 2.0, which is the new minimum
version. Thedenoiser
now uses HDR mode - New parameter
maxScatteringEvents
for thepathtracer
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
whenlightSamples > 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
- 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 andMPI_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 thempi_offload
module, while thempiDistributed
device is now in thempi_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" whendynamicScene
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 thempiOffload
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
- 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
- VDB volumes added support for contiguous data layouts, which can
- 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 thepiecewiseLinear
transfer function, usebox1f value
instead
OSPRay v2.9.0
- 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
thecellCentered
parameter (vertex-centered remains the
default) - Particle volumes ignore particles with zero radius
- Structured regular volumes support for cell-centered data via
- Add support for dynamic load balancing in MPI Offload device
- Support for photometric lights (e.g., IES or EULUMDAT) also for
sphere
andquad
lights. When settingintensityDistribution
,
other values forintensityQuantity
than
OSP_INTENSITY_QUANTITY_SCALE
are deprecated - Changed CMake variables for enabling app categories:
OSPRAY_ENABLE_APPS_BENCHMARK
replacesOSPRAY_APPS_BENCHMARK
OSPRAY_ENABLE_APPS_EXAMPLES
replacesOSPRAY_APPS_EXAMPLES
OSPRAY_ENABLE_APPS_TUTORIALS
replacesOSPRAY_APPS_TUTORIALS
OSPRAY_ENABLE_APPS_TESTING
replacesOSPRAY_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
- 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
- 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
- Add support for transformation and camera Motion Blur (with the path
tracer) viashutter
parameter of the camera andmotion.transform
array andtime
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
- Configurable
- 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 (materiald = 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, usetransform
instead - Dependencies Google Benchmark, GoggleTest, and Snappy moved
out-of-source to superbuild ExternalProjects