- New major revision of OSPRay brings API breaking improvements over
v1.x. Seedoc/ospray2_porting_guide.mdfor a deeper description of
migrating from v1.x to v2.0 anddoc/api.mdfor the latest API
documentationospRenderFramenow takes all participating objects as
function parameters instead of setting some as renderer paramsospRenderFrameis now asynchronous, where the task is managed
through a returnedOSPFuturehandle- 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 singleospSetParamAPI call - C++ wrappers found in
ospray_cpp.hnow 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
logLevelis >= 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.hto 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 adenoisertype 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
ospcommonlibrary 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
pathtracerandscivis
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
slicesgeometry. Instead, any geometry with volume
texture can be used for slicing - Introduction of new
boxesgeometry 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_radiusand constant radius for the geometry with
float radius. It usesOSP_ROUNDtype andOSP_LINEARbasis 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_ROMfor curves - Minimum required Embree version is now 3.7.0
- Removal of
cylindersandstreamlinesgeometry, usecurves
instead - Triangle mesh and Quad mesh are superseded by the
meshgeometry - Applications need to use the various error reporting methods to
check wether the creation (viaospNew...) of objects failed; a
returnedNULLis 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_backplatetexture is supported in all renderers and does
not hide lights in infinity (like the HDRI light) anymore;
explicitely make lights invisibleif this is needed - Changed the computation of variance for adaptive accumulation to be
independent ofTILE_SIZE, thusvarianceThresholdneeds to be
adapted if using a different TILE_SIZE than default 64 OSPGeometricModelnow 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
ospExamplesapp which consolidates previous interactive apps into one - New
ospBenchmarkapp 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