Releases: RenderKit/ospray
OSPRay v2.6.0
- Added new
intensityQuantity
typeOSP_INTENSITY_QUANTITY_SCALE
for thehdri
andsunSky
light source. For the future this is the
only supported quantity for these lights, the value
OSP_INTENSITY_QUANTITY_RADIANCE
is deprecated. When
OSP_INTENSITY_QUANTITY_SCALE
is used forsunSky
the default
value ofintensity
is0.025
to match the old behaviour - The MPI module is included in the releases packages. An
MPICH-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 - Fixed 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
- The
mpiOffload
andmpiDistributed
devices now support picking.
Picking in the distributed device will return the globally closest
object on the rank that owns that object. Other ranks will report
no hit - Messages issued 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 - Fix behavior of committing the framebuffer in distributed rendering
to match that of local rendering
OSPRay v2.5.0
- Add native support for cones or cylinders with curves geometry of
typeOSP_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
- The MPI module is now distributed as part of OSPRay in the modules
directory- The socket-based communication layer has been removed
- Add
intensityQuantity
parameter to light sources to control the
interpretation and convertion of theintensity
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
- 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
- Both geometric and volumetric models can now have their child
geometry/volume objects rebound using an object parameter - Fix light leaking artifacts at poles of HDRI (and Sun-Sky) light
- Add sRGB conversion to
ospExamples
such that the color of the
widget forbackgroundColor
actually matches - Dropping support for MSVC14, new minimum compiler on Windows is
MSVC15 (Visual Studio 2017)
OSPRay v2.4.0
- The pathtracer optionally allows for alpha blending even if the
background is seen through refractive objects like glass, by
enablingbackgroundRefraction
- 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 the
maxIteratorDepth
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 - Fixed 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
OSPRay v2.3.0
- Re-add SciVis renderer features (the previous version is still
available asao
renderer)- Lights are regarded, and thus the OBJ material terms
ks
and
ns
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 theWorld
- The effect range is controlled via
aoDistance
- The
- Lights are regarded, and thus the OBJ material terms
- 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 debug builds 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 includingext/glm.h
: see
ospTutorialGLM
as an example
- For rkcommon, include
- Changed parameters to
volume
texture: it now directly accepts the
volume
and thetransferFunction
- Fixed many memory leaks
- Handle
NaN
during volume sampling, which led to bounding boxes
being visible for some volumes and settings - Depth is now "accumulated" as well, using the minimum
- Fix shading for multiple modes of the
debug
renderer - New minimum ISPC version is 1.14.1
OSPRay v2.2.0
- 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 nowOSP_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 the
lightSamples
parameter - Support ring light by extending spot with
innerRadius
- Fixed nonphysical behavior of the
spot
andsphere
light sources- for area lights (when
radius > 0
) surfaces close 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 smallopeningAngle
)
- for area lights (when
- 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
torkcommon
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
will require some application updates to account for these
changes
- Note that while the C API remains the same, the C++ wrappers
- Fix bug where
ospGetCurrentDevice
would crash if used before
ospInit
- Allow
NULL
handles to be passed toospDeviceRetain
and
ospDeviceRelease
- ISPC generated headers containing the exported functions for
OSPRay's ISPC types and functions are now distributed with the SDK - Add CarPaint
flakeColor
parameter, defaults to current Aluminium - Fixed Debug build (which were producing different images)
- The path tracer now also regards the renderer materialist when
creating geometry lights
OSPRay v2.1.1
- 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
OSPRay v2.1.0
- 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
ofGeometricModel
- Currently there is a fixed 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
- 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
toospGetCurrentDevice
- Generalized
cpp::Device
parameter setting to match other handle
types - Passing
NULL
toospRelease
is not reported as error anymore - Fix computation of strides for
OSPData
- Fix transparency in
scivis
renderer - Add missing C++ wrapper for
ospGetVariance
- Proper demonstration of
ospGetVariance
inospTutorialAsync
- Fix 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 appropriateregisterType
function - Fix issue with OSPRay ignoring tasking system thread count settings
- Fix issue where OSPRay always loaded the ISPC module, even if not
required - OSPRay now requires minimum Open VKL v0.9.0
OSPRay v2.0.1
- Fix bug where Embree user-defined geometries were not indexed correctly
in the scene, which now requires Embree v3.8.0+ - Fix crash when the path tracer encounters geometric models that do not
have a material - Fix crash when some path tracer materials generated NULL bsdfs
- Fix bug where
ospGetBounds
returned incorrect values - Fix missing symbol in denoiser module
- Fix 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 ofcolor
on
geometric models - Fix various inconsistent handling of frame buffer alpha between renderers
ospGetCurrentDevice
now increments the ref count of the returned
OSPDevice
handle, so applications will need to release the handle when
finished by usingospDeviceRelease
accordingly- Added denoiser to
ospExamples
app - Added
module_mpi
to superbuild (disabled by default) - The superbuild now will emit a CMake error when using any 32-bit CMake
generator, as 32-bit builds are not supported
OSPRay v2.0.0
- New major revision of OSPRay brings API breaking improvements over
v1.x. Seedoc/ospray2_porting_guide.md
for a deeper description of
migrating from v1.x to v2.0 anddoc/api.md
for the latest API
documentationospRenderFrame
now takes all participating objects as
function parameters instead of setting some as renderer paramsospRenderFrame
is now asynchronous, where the task is managed
through a returnedOSPFuture
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 singleospSetParam
API call - C++ wrappers found in
ospray_cpp.h
now automatically track
handle lifetimes, therefore applications using them do not need
to useospRelease
(or the newospRetain
) with them: see
usage example inapps/tutorials/ospTutorial.cpp
- Unused parameters are reported as status messages when
logLevel
is >= 1 (most easily set by enabling OSPRay debug on
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 utility functions are implemented in terms of the core API
found inospray.h
, therefore they are compatible with any
device backend
- Use
- Introduction of new Intel® Open Volume Kernel Library (Open VKL)
for greatly enhanced volume sampling and rendering features and
performance - Added direct support for Intel® Open Image Denoise as an optional
module, which adds adenoiser
type toospNewImageOperation
- OSPRay now requires minimum Embree v3.7.0
- New CMake superbuild available to build both OSPRay's dependencies
and OSPRay itself- Found in
scripts/superbuild
- See documentation for more details and example usage
- Found in
- The
ospcommon
library now lives as a stand alone repository and
is required to build OSPRay - The MPI module is now a separate repository, which also contains all
MPI distributed rendering documentation - Log levels are now controled with enums and named strings (where applicable)
- A new flag was also introduced which turns all OSP_LOG_WARNING messages
into errors, which are submitted to the error callback instead of the
message callback - Any unused parameters an object ignores now emit a warning message
- A new flag was also introduced which turns all OSP_LOG_WARNING messages
- New support for volumes in the
pathtracer
- Several parameters are available for performance/quality
trade-offs for both photo-realistic and scientific visualization
use cases
- Several parameters are available for performance/quality
- Simplification of the SciVis renderer
- Fixed AO lighting and simple ray marched volume rendering for
ease of use and performance
- Fixed AO lighting and simple ray marched volume rendering for
- Overlapping volumes are now supported in both the
pathtracer
andscivis
renderers - New API call for querying the bounds of objects (
OSPWorld
,
OSPInstance
, andOSPGroup
) - Lights now exist as a parameter to the world instead of the renderer
- Removal of
slices
geometry. Instead, any geometry with volume
texture can be used for slicing - Introduction of new
boxes
geometry type - Expansion of information returned by
ospPick
- Addition of API to query version information at runtime
- Curves now supports both, per vertex varying radii as in
vec4f[] vertex.position_radius
and constant radius for the geometry with
float radius
. It usesOSP_ROUND
type andOSP_LINEAR
basis by
default to create the connected segments of constant radius. For per
vertex varying radii curves it uses Embree curves. - Add new Embree curve type
OSP_CATMULL_ROM
for curves - Minimum required Embree version is now 3.7.0
- Removal of
cylinders
andstreamlines
geometry, usecurves
instead - Triangle mesh and Quad mesh are superseded by the
mesh
geometry - Applications need to use the various error reporting methods to
check wether the creation (viaospNew...
) of objects failed; a
returnedNULL
is not a special handle anymore to signify an error - Changed module init methods to facilitate version checking:
extern "C" OSPError ospray_module_init_<name>(int16_t versionMajor, int16_t versionMinor, int16_t versionPatch)
- The
map_backplate
texture is supported in all renderers and does
not hide lights in infinity (like the HDRI light) anymore;
explicitely make lights invisible
if this is needed - Changed the computation of variance for adaptive accumulation to be
independent ofTILE_SIZE
, thusvarianceThreshold
needs to be
adapted if using a different TILE_SIZE than default 64 OSPGeometricModel
now has the option to index a renderer-global material
list that lives on the renderer, allowing scenes to avoid renderer-specific
materials- Object type names and parameters all now follow the camel-case convention
- New
ospExamples
app which consolidates previous interactive apps into one - New
ospBenchmark
app which implements a runnable benchmark suite - Known issues:
- ISPC v1.11.0 and Embree v3.6.0 are both incompatible with OSPRay
and should be avoided (OSPRay should catch this during CMake
configure)
- ISPC v1.11.0 and Embree v3.6.0 are both incompatible with OSPRay
OSPRay v2.0.0-alpha
-
New major revision of OSPRay brings API breaking improvements over
v1.x. Seedoc/ospray2_porting_guide.md
for a deeper description of
migrating from v1.x to v2.0 anddoc/api.md
for the latest API
documentationospRenderFrame
now takes all participating objects as
function parameters instead of setting some as renderer paramsospRenderFrame
is now asynchronous, where the task is managed
through a returnedOSPFuture
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 singleospSetParam
API call - C++ wrappers found in
ospray_cpp.h
now automatically track
handle lifetimes, therefore applications using them do not need
to useospRelease
(or the newospRetain
) with them: see
usage example inapps/tutorials/ospTutorial.cpp
- Unused parameters are reported as status messages when
logLevel
is >= 1 (most easily set by enabling OSPRay debug on
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 utility functions are implemented in terms of the core API
found inospray.h
, therefore they are compatible with any
device backend
- Use
-
Introduction of new Intel® Open Volume Kernel Library (Open VKL)
for greatly enhanced volume sampling and rendering features and
performance -
Added direct support for Intel® Open Image Denoise as an optional
module, which adds adenoiser
type toospNewImageOperation
-
New CMake superbuild available to build both OSPRay's dependencies
and OSPRay itself- Found in
scripts/superbuild
- See documentation for more details and example usage
- Found in
-
The
ospcommon
library now lives as a stand alone repository and
is required to build OSPRay -
New support for volumes in the
pathtracer
- Several parameters are available for performance/quality
trade-offs for both photo-realistic and scientific visualization
use cases
- Several parameters are available for performance/quality
-
Simplification of the
scivis
renderer- Fixed AO lighting and simple ray marched volume rendering for
ease of use and performance
- Fixed AO lighting and simple ray marched volume rendering for
-
New API call for querying the bounds of objects (
OSPWorld
,
OSPInstance
, andOSPGroup
) -
Lights now exist as a parameter to the world instead of the renderer
-
Removal of
slices
geometry. Instead, any geometry with volume
texture can be used for slicing (see tutorial
ospTutorialStructuredVolume
for example) -
Introduction of new
boxes
geometry type -
Expansion of information returned by
ospPick
-
Addition of API to query version information at runtime
-
Known issues:
- Open VKL must be built with a compatible set of ISAs with OSPRay
due to a known issue with VKL iterator types. This is easiest
to address by usingOSPRAY_BUILD_ISA
andOPENVKL_BUILD_ISA
with the ISA of the target machine. This will be addressed for
the official v2.0 release. - The old variant of
ospNewData
was temporarily retained in
ospray_util.h
for C++ applications and will be removed for the
official v2.0 release - ISPC v1.11.0 and Embree v3.6.0 are both incompatible with OSPRay
and should be avoided (OSPRay should catch this during CMake
configure) - This is a source-only release, binaries will be made available
for the official v2.0.0 release
- Open VKL must be built with a compatible set of ISAs with OSPRay